1

このシナリオでは、次の3つのモデルを持つ既存のデータベースがあります。

Address、'AddressId'、'ParentId'、'City'、'State'などがあります

Person、「PersonId」、「Name」などがあります。

Company、「CompanyId」、「Name」などがあります。

Address1つのテーブルよりも多くのモデルの行を含めることができるため、外部キーはありません。列「ParentId」には、Address「PersonId」または「CompanyId」のいずれかが含まれます。

を生成するためにDbContext、Entity Framework Power Tools Beta 2を使用しました。参照整合性がないため、生成されたクラスにはPersonCompany必要なアドレスのコレクションが含まれていません。

これらのクラスを変更してこの「Addresses」プロパティに追加し、それがAddressテーブルに正しくマップされていることを確認するにはどうすればよいですか?

現在、私はこのようなことをしています。可能であれば、コンテキストマップを作成したいと思います。

public IEnumerable<Address> Addresses
{
   get 
   {
       IEnumerable<Address> addresses = null;
       using(MyDb db = new MyDb())
       {
            addresses = db.Addresses.Where(a => a.ParentId == this.PersonId)
       }

       return addresses;
   }
}

ありがとう!

4

2 に答える 2

2

可能であれば、アドレステーブルに一意のIDを追加してから、そのIDを、個人、会社、ベンダーなど、所属するエンティティとともに保存する必要があります。

複数のアドレスのシナリオが原因でできない場合は、エンティティ(ベンダー、個人、会社など)のGUIDとアドレスのGUIDを格納する新しいテーブルAddressXRefテーブルを作成できます。したがって、すべてのエンティティが複数のアドレスを持つ可能性があり、EFは、すべての場所にキーがあるため、この設定に非常に満足します。

(外部参照テーブルにある種のアドレスタイプインジケーターも必要なので、それがどのようなアドレスであるか、郵送、配送などがわかりました)

于 2012-10-03T19:21:53.467 に答える
0

Create partial classes for both Company and Person which have that property you have created in it.

public partial class Company
{
   public IEnumerable<Address> Addresses { ... }
}
于 2012-10-03T19:14:18.417 に答える