我有一个班级
public class Foo
{
public int UserId { get; set; }
}
我正在使用代码第一个流畅的映射将其映射到数据库。
Property(i => i.UserId)
.HasColumnName("userno");
唯一的问题是userno实际上是数据库中的char(10)。我如何进行铸造或转换此类型?因为我目前收到此错误。
'Foo'上的'UserId'属性无法设置为'String'值。 您必须将此属性设置为“Int32”类型的非null值。
由于
答案 0 :(得分:3)
实体框架在映射中不支持类型转换,因此场景中唯一有效的映射属性是:
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
。