ここで面白いもののビット私は前に出会ったことはありません。我々はそれを作成した理由は、したがって、我々はジャンクションテーブルの上に追加のプロパティを持っていると言うには十分 - 簡潔にするために省略EF6の多対多エンティティ
public class User
{
public int Id { get; set; }
}
public class School
{
public int Id { get; set; }
}
public class UserSchool
{
[Key]
[Column(Order = 1)]
public int UserId { get; set; }
[Key]
[Column(Order = 2)]
public int SchoolId { get; set; }
[Required]
public virtual User User { get; set; }
[Required]
public virtual School School { get; set; }
}
(その他の追加プロパティ:私たちは、手動でアノテーションを使用してEF6で多対多の関係を作成しました
これはうまくいきます。私たちは、流動的なAPIを使用して複雑なキーをマッピングすることはできませんが、それは重要ではありません。本質的には、2つの標準テーブルをジャンクションを介して多対多に結合しました。勝者。
今、我々はまた、多対多として、別のテーブルに接合テーブル(UserSchool
)に参加する必要があります。
public class IPAddress
{
public int Id { get; set; }
public string IPAddress { get; set; }
}
public class UserSchoolIPAddress
{
?? what to put in here
public virtual UserSchool UserSchool { get; set; }
public virtual IPAddress IPAddress { get; set; }
}
私は流暢なAPIマッピングとの両方を試してみました命名規則と注釈でIDプロパティを指定する:流暢なAPIマッピングは失敗します。ナビゲーションエンティティのプロパティを使用するのは好きではないと思います。注釈付きのIDバインディングは、テーブルスキーマ上でUserSchool
のプロパティを2度複製し、同期性の問題を引き起こします。
だから、誰もこのシナリオに遭遇して解決策を見つけましたか?
私は私の元の質問で述べたように、我々は実際に接合マッピングのプロパティとして追加データを保存する - たとえば、 'UserSchool'オブジェクトは、実際に他の外国付属のキーと権限レベルを持っています。そのため、手動で設定する必要があります。 – Katstevens