错误2019:使用实体框架代码优先

时间:2015-08-09 10:42:02

标签: c# entity-framework

我正在我的项目中实施实体框架代码优先方法,并陷入了一个问题。

  

错误详细信息: 18,12):错误2019:指定的成员映射无效。类型' Edm.Byte [Nullable = False,DefaultValue =]'成员   '状态'在类型' IMS.DAL.Users_mast'与...不兼容   ' SqlServer.binary [可空=假,默认值=,的MaxLength = 8000,定长=真]'   会员身份'在类型' CodeFirstDatabaseSchema.Users_mast'。

我的代码: User_mast.cs文件包含:

[Column(TypeName = "binary")]
public byte status { get; set; } // Active | Inactive (1 | 0 ), where I want status column to be created as binary column in sql server.

public class context : DbContext
{
    public context()
        : base("name=sqlConn")
    {
    }

    public DbSet<Users_mast> Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
    }
}

最后,

    context obj = new context();

    public void add()
    {
        obj.Users.Add(new Users_mast() {user_fname="Agnib", user_lname="Pyne", user_email="a@gmail.com", user_mobile="9830972301", username="agnib", pwd="As1232", created_date=DateTime.Now, status=1 });
        obj.SaveChanges();
    }

在运行时,我收到上述错误。我可以理解它是由于状态字段设置为字节而未被映射为二进制。

那么我该怎么做才能使sql server中的列成为二进制文件?是否有任何SQL服务器类型和.net类型之间的映射列表,特别是在EF Code-First的情况下?

感谢任何帮助。请帮忙!!!

1 个答案:

答案 0 :(得分:2)

将您的财产更改为:

[Column(TypeName = "bit")]
public bool status { get; set; }

本机C#类型bool专门用于存储true和false值。 bool数据类型映射到SQL bit数据类型。

binary SQL数据类型用于存储文件或图像等二进制数据。如果要映射到C#属性,可以使用byte[]数据类型(字节数组)。在这种情况下,代码看起来像这样:

[Column(TypeName = "binary")]
public byte[] status { get; set; }