私はかなり長い間潜んでいるので、ここに最初の質問があります;)
私はEntityFramework5.0 Code Firstで遊んでいて、次のことをしたいと思っています。
私には2つのエンティティがあり、すべてのエンティティが次のようにアドレスエンティティと関係を持つようにします。
- アドレス値を格納するAddressエンティティが1つありますが、値を持つエンティティとは関係がありません。
- Addressエンティティと対応するエンティティ(Person、Company、将来的には他のいくつか)を参照する別のエンティティAddressBookがあります
コードは次のとおりです。
public partial class Address : BaseEntity
{
[Key]
public int ID { get; set; }
public string Street { get; set; }
public string CityName { get; set; }
public int? PostalCode { get; set; }
public virtual ICollection<Person> Persons { get; set; }
public virtual ICollection<Company> Companies{ get; set; }
}
public partial class Person : BaseEntity
{
[Key]
public int ID { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
}
public partial class Company: BaseEntity
{
[Key]
public int ID { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
}
これにより、テーブルを使用してデータベーススキーマが作成されます。
- 住所
- AddressPerson(複合主キー付き)
- Address_ID
- Person_ID
- AddressCompany
- Address_ID
- Company_ID
- 人々
- 企業
これが私がやりたいことです:
- 住所
- 住所録
- Address_ID(PK)
- Person_ID(FK)
- Company_ID(FK)
- 人々
- 企業
私がやりたいのは、AddressBookのようなテーブルを用意することです。
public partial class AddressBook
{
[Key]
public int ID { get; set; }
public virtual Address Address { get; set; }
public virtual Person Person { get; set; }
public virtual Company Company { get; set; }
}
PersonクラスとCompanyクラスでナビゲーションプロパティを定義する方法がわかりません。
基になるAddressBookICollection<Address> Addresses
について知らなくても、アドレスのコレクションだけで機能するようにしたいので、ナビゲーションプロパティが必要 です。
これを行うことは可能ですか、DbModelBuilder
それともプロパティの内部getter
とプロパティのコードを記述して、 AddressBookからアドレスを取得する必要がsetter
ありますか?ICollection<Address> Addresses
ありがとう!