13

流暢な API で 1 対多の関係構文を見つけることができないようです。

例として、以下のように2つのテーブルがあります

ユーザー

Id
Name

ユーザー履歴

Id
UserId
Date

クラスでは、私は次のことを持っています

public class User 
{
     public int Id { get; set; }
     public virtual ICollection<UserHistory> Histories { get; set; }
}

public class UserHistory
{
     public int Id { get; set; }
     public int UserId { get; set; }
     public DateTime Date { get; set; }
}

以下を試してみましたが、実際に正しいかどうかはわかりません。

modelBuilder.Entity<User>()
       .HasRequired(w => w.Histories)
       .WithMany();

modelBuilder.Entity<User>()
       .HasMany(f => f.Histories)
       .WithOptional()
       .HasForeignKey(f => f.UserId);

一対多の関係の正しい構文は何ですか?

技術的には、新しいテーブルを追加することで多対多に分割できましたが、別のテーブルを導入したくありませんでした。

4

1 に答える 1

27

モデルでは、エンティティには必要な各履歴を持つ多くUserエンティティがあり、関係にはと呼ばれる外部キーがあります。 Histories UserUserId

modelBuilder.Entity<User>()
   .HasMany(u => u.Histories)
   .WithRequired()
   .HasForeignKey(h => h.UserId);

UserId(外部キー プロパティは null 許容ではないため、リレーションシップは必須である必要があります (オプションではありません)。)

于 2013-01-12T17:33:55.933 に答える