让EF 4.1自动创建一个标识列

时间:2011-11-18 10:13:55

标签: c# entity-framework identity-column

假设你有

public class A
{
   public string _myString;
}

这个背景:

public class MyContext: DbContext
{
    public DbSet<A> myASet{ get; set; }
}

现在,有没有办法让EF为myASet生成一个标识列?

我不想向class A添加ID字段,所以我想知道EF是否可以这样做。 非常感谢,

尔根

3 个答案:

答案 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; } 
 }