【发布时间】:2018-09-22 22:28:47
【问题描述】:
我正在使用 Entity Framework 来映射一些表,但除非我将某些列声明为主键,否则我不能这样做。
这里的问题是我的数据库中的表没有主键并且有数百万行。我无权创建新的Id 列。
[Table("MYTABLE")]
public class myTable
{
[Column("NUMX")]
public virtual string NumX { get; set; }
[Column("NAME")]
public virtual string Name { get; set; }
[Column("AGE")]
public virtual int AGE { get; set; }
}
Obs:如果我将[Key] 属性添加到像Age 这样的列,它可以工作,但返回错误的数据。
有什么方法可以省略主键吗?
【问题讨论】:
-
您可以从所有列中创建一个复合键。
-
任何“普通”数据表都应该有主键——为什么一开始就忽略它呢? EF 需要 唯一标识每一行的东西 - 主键的确切工作!所以不要试图找到“解决”这个问题的方法——相反,拥抱主键并将一个添加到你的表中! (即使它已经有数百万行)
-
NUMX是唯一的吗? -
问题是你的数据模型还没有主键。
标签: asp.net-mvc entity-framework db-first