假设你有
public class A
{
public string _myString;
}
这个背景:
public class MyContext: DbContext
{
public DbSet<A> myASet{ get; set; }
}
现在,有没有办法让EF为myASet
生成一个标识列?
我不想向class A
添加ID字段,所以我想知道EF是否可以这样做。
非常感谢,
尔根
答案 0 :(得分:2)
如果您希望在数据库中拥有ID 必须将ID列添加到您的类中。同样在EF中,每个实体都必须具有映射主键。
答案 1 :(得分:1)
EF只会使用模型类中实际存在的列,因此您必须自己填写所需的所有列。这包括主键的标识列。
答案 2 :(得分:1)
如果您有一个名为Product的实体和一个名为'ProductId'的属性,EF将自动添加标识列,因为它按惯例查找实体名称+ Id。
您可以通过在所需属性上方添加[key]属性来使用不符合约定的列。
在下面的示例中。将为ProductId创建一个标识列。
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public string CategoryId { get; set; }
public virtual Category Category { get; set; }
}
在此示例中,“MyId”列将创建为标识。
public class Product
{
[key]
public int MyId { get; set; }
public string Name { get; set; }
public string CategoryId { get; set; }
public virtual Category Category { get; set; }
}