entity framework代码第一个铸造列

我上课了

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

我正在使用代码第一个流畅的映射将其映射到数据库。

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

唯一的问题是userno实际上是数据库中的char(10)。 我如何进行铸造或转换此类型? 因为我目前得到这个错误。

‘Foo’上的’UserId’属性无法设置为’String’值。 您必须将此属性设置为“Int32”类型的非null值。

谢谢

entity framework在映射中不支持类型转换,因此您的方案中唯一有效的映射属性是:

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

如果你想要int属性,你必须这样做:

 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