私は次のクラスを持っています:
public class Account
{
public int Id {get; set;}
public ICollection<AccountAddress> Addresses {get; set;}
}
public class Address
{
public int Id {get; set;}
public string Street1 {get; set;}
... //Other address properties
}
public class AccountAddress : Address
{
public int AccountId {get; set;}
public DateTime BeginDate {get; set;}
public DateTime PurgeDate {get; set;}
public bool IsPrimary {get; set;}
}
私の流暢なAPI構成には、次のものがあります。
public AccountConfiguration()
{
ToTable("accounts");
HasKey(m => m.Id);
Property(m => m.Id).HasColumnName("accountid");
...
//This is wrong because it does not allow many to many
HasMany(m => m.Addresses).WithRequired().HasForeignKey(m => m.AccountId);
}
public AddressConfiguration()
{
ToTable("addresses");
HasKey(a => a.Id);
Property(a => a.Id).HasColumnName("addressid");
...
}
public AccountAddressConfiguration()
{
ToTable("acctaddrs");
HasKey(m => new {m.Id, m.AccountId});
...
}
AccountConfiguration の関係を編集して多対多の関係にしようとしていますが、それを定義する方法を理解するのに苦労しています。
この背後にある考え方は、アカウントは複数のアドレスを持つことができ、一部のアカウントは同じアドレスに関連付けることができるということです。
ご協力いただきありがとうございます。
編集 だから、ここに私が達成する必要があるものがあります。Id フィールドを持ち、一般的な住所情報をすべて格納するテーブル (Addresses) があります。Addresses テーブル内のアドレスを指す AddressId フィールドを持つテーブルは他にも多数あります。1 つのアドレスが、さまざまな関係で再利用される場合があります。
現在、アカウントには多くの住所がありますが、住所に関する追加データもあります。私が達成したいのは、住所データを Addresses テーブルに格納し、追加のデータを別のテーブルに格納することです。繰り返しますが、アカウントは住所を共有できますが、追加の住所データは共有できません。