假设你有
public class A
{
public string _myString;
}
而这个背景:
public class MyContext: DbContext
{
public DbSet<A> myASet{ get; set; }
}
现在,有没有办法告诉 EF 生成一个标识列myASet
?
我不想在 中添加 ID 字段class A
,所以我想知道 EF 是否可以这样做。非常感谢,
于尔根
假设你有
public class A
{
public string _myString;
}
而这个背景:
public class MyContext: DbContext
{
public DbSet<A> myASet{ get; set; }
}
现在,有没有办法告诉 EF 生成一个标识列myASet
?
我不想在 中添加 ID 字段class A
,所以我想知道 EF 是否可以这样做。非常感谢,
于尔根
如果你想在数据库中拥有它,你必须将 ID 列添加到你的类中。同样在 EF 中,每个实体都必须具有映射的主键。
EF 只会使用实际在您的模型类中的列,因此您必须将所有您想要的列放入您自己。这包括主键的标识列。
如果您有一个名为 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; }
}