实体框架代码第一个铸造列

时间:2011-08-02 08:38:47

标签: c# entity-framework mapping entity-framework-4.1 code-first

我有一个班级

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

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

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

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

  

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

由于

1 个答案:

答案 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