【问题标题】:Entity Framework Code First Casting Columns实体框架代码优先铸造列
【发布时间】:2011-10-18 01:38:04
【问题描述】:

我有课

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

我正在使用代码优先的流利映射将其映射到数据库。

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

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

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    实体框架不支持映射中的类型转换,因此您的场景中唯一有效的映射属性是:

    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

    【讨论】:

    • 认为可能是这种情况:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 2014-05-23
    • 1970-01-01
    • 2012-05-10
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多