1

を鋳造私はクラスEntity Frameworkのコードファースト列

public class Foo 
{ 
    public int UserId { get; set; } 
} 

を持っていると私は、データベースにこれをマッピングするためのコード最初の流暢なマッピングを使用しています。

Property(i => i.UserId) 
      .HasColumnName("userno"); 

唯一の問題は、usernoが実際にはデータベースのchar(10)であることです。この型をキャストまたは変換するにはどうすればよいですか?現在このエラーが発生しています。

'Foo'の 'UserId'プロパティを 'String'値に設定できませんでした。 このプロパティは、 'Int32'型のnull以外の値に設定する必要があります。

おかげ

答えて

3
あなたのシナリオでのみ有効マッピングされたプロパティがあるので、マッピングで型変換のためのあらゆるサポートを持っていない

エンティティフレームワーク:あなたにもintプロパティをしたい場合は

public class Foo 
{ 
    public string UserId { get; set; } 
} 

ます次のようにする必要があります:

public class Foo 
{ 
    public string UserId { get; set; } 

    public int UserIntId 
    { 
     get { return Int32.Parse(UserId); } 
     set { UserId = value.ToString(); } 
    } 
} 

さらに、これをマッピングに追加してください:

Ignore(i => i.UserIntId); 

UserIdのアクセシビリティでプレイすることはできますが、マッピングが実際にそのプロパティを表示する場合はアクセシビリティも影響を受けることに注意してください。そうでなければ、UserIdは全くマッピングされません。

+0

これは事実かもしれません:( –