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 で、FK が Sale PersID であると仮定します (したがって、ID の命名規則はテーブルごとに異なります)。

異なる列 ID 名を考慮しながら、fluent を使用してエンティティをマップするにはどうすればよいですか?

4

1 に答える 1

1

したがって、EFはすでにPersonIDPersons(People?)テーブルの主キーとして使用されます。もちろん、いつでも次のように書くことができます。

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

次に、PersonとSaleの関係について説明します。クラスに「Person」というSaleタイプのナビゲーションプロパティがあると仮定します。Person

modelBuilder.Entity<Sale>().HasRequired(s => s.Person)
                           .WithMany()
                           .HasForeignKey(s => s.PersID);

「HasForeignKey」メソッドを使用すると、外部キー値を定義するクラスのプロパティを指定できます。

外部キープロパティを完全に省略してもかまいません。PersIDプロパティを破棄して、データベース列が次のように「PersID」と呼ばれることをEFに通知することをお勧めします。

modelBuilder.Entity<Sale>().HasRequired(s => s.Person)
                           .WithMany()
                           .Map(m => m.MapKey("PersID"));
于 2013-03-11T03:50:20.400 に答える