私はこれについて数回ブロックを回ってきたので、私は新鮮なアプローチをとっています. 複数の 0 対多の関係の多側にある単一のエンティティを持つことが可能かどうかを調べたいと思います。これは私がやろうとしていることです:
クライアントには 0 対多の電話があります
public class Client
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ClientId { get; set; }
public string Name { get; set; }
public virtual ICollection<Phone> Phones { get; set; }
}
ビジネスには 0 対多の電話があります
public class Business
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int BusinessId { get; set; }
public string Name { get; set; }
public virtual ICollection<Phone> Phones { get; set; }
}
そして、ここに電話があります:
public class Phone
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PhoneId { get; set; }
public string Number { get; set; }
}
もちろん、Business/Client の Phones プロパティの問題は、これにより Phone に Client と Business の両方への FK が作成され、Phone が乱雑になることです。
そのため、別のポスターが手動で結合テーブルを作成しようとしているのを見ましたが、1 つの関係に参加する多面を対象としているように見えました。
public class ClientPhone
{
public int ClientID { get; set; }
public int PhoneID { get; set; }
public virtual Client Client { get; set; } // One Client
public virtual Phone Phone { get; set; } // One Phone
}
従来の 0 対多の関係を使用して、Phone を ClientPhones と BusinessPhones の「通常の」エンティティに分割する必要があります。これをモデル化するための最もクリーンな方法について誰かがアドバイスをくれれば、非常にありがたいです。
ありがとう!