2

首先对现有数据库使用代码。我有 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 名称的同时使用 fluent 映射实体?

4

1 回答 1

1

所以 EF 已经成为PersonID你的 Persons (People?) 表的主键。当然,你总是可以写:

modelBuilder.Entity<Person>().HasKey(p => p.PersonID);

然后你要描述 Person 和 Sale 之间的关系。我假设你的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"));
于 2013-03-11T03:50:20.400 回答