首先在现有数据库中使用代码。我有2个表具有不同的主键和外键名称。例如
public class Person
{
public int PersonID {get; set;}
public virtual Sale {get; set;}
public ICollection<Order> Orders {get; set;}
//props
}
public class Sale
{
public int saleId {get; set;}
public int PersID {get; set;}
//props
}
public class Oder
{
public int OrderId {get; set;}
public int pID {get set;}
}
假设表Person中的PK是PersonID,Order中的PID和Sale PersID中的FK(因此ID的命名约定因表而异)
如何在考虑不同的列ID名称的情况下使用流畅地映射实体?
答案 0 :(得分:1)
因此,EF已经将PersonID
作为您的人员(人员?)表的主键。当然,你总是可以写:
modelBuilder.Entity<Person>().HasKey(p => p.PersonID);
然后你要描述人与销售之间的关系。我将假设您的Sale
类具有类型为Person
的导航属性,名为“Person”:
modelBuilder.Entity<Sale>().HasRequired(s => s.Person)
.WithMany()
.HasForeignKey(s => s.PersID);
“HasForeignKey”方法允许您在类上指定定义外键值的属性。
不要忘记,完全省略外键属性也是可以的。您可能想要抛弃PersID
属性并告诉EF数据库列被称为“PersID”,如下所示:
modelBuilder.Entity<Sale>().HasRequired(s => s.Person)
.WithMany()
.Map(m => m.MapKey("PersID"));