これはどこかで説明されていますが、私は見つけることができません。私は正しい検索条件を使用していないと思います。多対多リレーションシップとコード内の列のコンポジットプライマリキー
基本的に私はPOCOとして定義した多対多テーブルを持っています。もしあなたが望むなら、2対1の関係を持つテーブルとしてそれを見ることもできます。
一方の端には、もう一方の端にユーザーテーブルと除算テーブルがあります。しかし、各ユーザー部門のコンボは、年ごとに1つずつ、複数の関係を持つことができます。したがって、関連テーブルでは年のint列があり、主キーはUserId fk、DivisionId fkおよびYearからのコンポジットになります。
EF 4.1コードファーストでこれを行う方法がわかりませんでした。私はDataAnnotationの方法とFluentApiの方法があることを望んでいます。
これをカバーするチュートリアルに私を指摘できたら、本当にうれしいでしょう。
ユーザー:
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
//some other properties
public virtual ICollection<DivisionService> Services { get; set; }
}
部門:
public class Division
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int DivisionId { get; set; }
//some other properties
public virtual ICollection<DivisionService> Services { get; set; }
}
は/メインテーブルに参加:
public class DivisionService
{
public int Year { get; set; } //this and the two foreign keys should be composite Primary Key
//some other properties
public virtual User User { get; set; }
public virtual Division Division { get; set; }
}
[Key]をUserプロパティとDivisionプロパティに追加することができ、EFはそれをそのテーブルのfkとして認識しますか? –
いいえ、 '[Key]'はPKについてです。年との結合テーブルを使用する場合は、関連付けを2つの1-Nとして設定するか、PKの年の部分を設定する必要があります。ペイロードとの関連付けはサポートされていません。 –
それは私が言っていることです。私は、UserIdとDivisionIdに[Key]属性をDivisionServiceの外部キーと同じように置くべきだと言いましたが、私はそれらを定義しません。だから私はそれらをプロパティに置くことができ、コード・ファーストはそれをFKフィールドとして理解していますか? –