错误2019:使用实体框架代码优先指定的成员映射无效

本文关键字:成员 无效 映射 代码 2019 框架 实体 错误 | 更新日期: 2023-09-27 18:06:59

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

Error Details: 18,12): Error 2019: Member Mapping specified is not valid。类型是"Edm"。Byte[Nullable=False,DefaultValue=]' of member"状态"类型为"IMS.DAL"。Users_mast'不兼容"SqlServer.binary [Nullable = False, DefaultValue =,最大长度= 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的情况下?

任何帮助都是感激的。请帮助! !

错误2019:使用实体框架代码优先指定的成员映射无效

将属性更改为:

[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; }

在我的情况下,所有列都设置正确,但Oracle Unmanaged Driver显然不总是加载到visual studio很正确。

我可以让它工作有时,但它经常在重新启动我的visual studio开发机器后失败。我在解决方案(MVC5 + EF + AngularJS +捆绑Web优化)中尝试了重建+重新加载T4模板和重新编译文件的组合。最后,这被证明是一个更直接的解决方案:

:错误2019:指定的成员映射无效。|,甲骨文社区[^]

  • (a)打开Visual Studio帮助/关于Microsoft Visual Studio并单击OK按钮退出对话框
  • (b)在服务器资源管理器中打开要使用的连接