【问题标题】:error 2019: Member Mapping specified is not valid using Entity Framework Code First错误 2019:使用实体框架代码优先指定的成员映射无效
【发布时间】: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


【解决方案1】:

将您的属性更改为:

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

原生 C# 类型 bool 专门用于存储真值和假值。 bool 数据类型映射到 SQL bit 数据类型。

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

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

【讨论】:

  • 嗯,这绝对是一个有用的信息。实际上,我想在数据库中存储 1 或 0。为此,我也可以使用 int,但我不想使用 int。如果我使用位类型,它会将值存储为 true / false 还是 1 / 0?
  • Bit 会将值存储为 1 或 0。它是最小的数据类型。它实际上是一位(开或关,二进制为 1 或 0)
  • 此外,您现在使用的字节由 8 位组成。
  • 你应该接受这个作为答案,并奖励 Maurits 他的 25 个代表
【解决方案2】:

在我的情况下,所有列都设置正确,但 Oracle 非托管驱动程序显然并不总是完全正确地加载到 Visual Studio。

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

这个: Error 2019: Member Mapping specified is not valid. | Oracle Community[^]

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

【讨论】:

    猜你喜欢
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 2011-04-21
    相关资源
    最近更新 更多