【发布时间】:2015-08-09 10:42:01
【问题描述】:
我正在我的项目中实施实体框架代码优先方法,但遇到了一个问题。
错误详情: 18,12):错误 2019:指定的成员映射无效。成员的类型 'Edm.Byte[Nullable=False,DefaultValue=]' “IMS.DAL.Users_mast”类型中的“状态”与 'SqlServer.binary[Nullable=False,DefaultValue=,MaxLength=8000,FixedLength=True]' 'CodeFirstDatabaseSchema.Users_mast' 类型的成员 'status'。
我的代码: 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 server 类型和 .net 类型之间的映射列表,特别是在 EF Code-First 的情况下?
感谢任何帮助。请帮忙!!!
【问题讨论】:
-
为什么要将真/假值存储为代码中的字节和数据库中的二进制文件? bool 和 bit 有什么问题?
标签: c# entity-framework