我正在我的项目中实施实体框架代码优先方法,并陷入了一个问题。
错误详细信息: 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的情况下?
感谢任何帮助。请帮忙!!!
答案 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; }