3

MSDNのドキュメントは、このトピックについて明確です:「ComplexTypesには関連付けを含めることはできません」

複合型について読む場合、最もよく使用される例はAddressComplexTypeです。

class Person
{
    public Address Address { get; set; }
}
class Address
{
    public string Street { get; set; }
    public string Zip { get; set; }
    public string CountryId { get; set; }
}

国を協会として定義したいと思います。

class Address
{
    //other properties ....
    public Country Country { get; set; } //vs: string CountryId { get; set; }
}

ご覧のとおり、AddressComplexTypeで国に関連付けを追加したいと思います。残念ながら、これは不可能です。これにより、完全な例は無意味になります。これは、Personタイプ自体に国の関連付けを定義する必要があるため、Address-CT全体が役に立たなくなるためです。

EFにはプロジェクトに必要な機能の一部が欠けているが、EF 6でサポートされる可能性が高いため、現在NHibernateを使用してプロジェクトを設定しています。EFの急速な進化と最近発表されたオープンソースモデルを考慮して、 NHからEFへの移行の可能性を将来に備えて開いておいてください。NHibernate ComplexTypes( "Components")では、アソシエーションをサポートしているため、NHで使用する場合、EFへの移行は簡単にできません。

これが現在の制限であるかどうか知りたいですか?

  • 今後、このような機能をサポートする予定はありますか?
  • この機能をサポートしない明確な理由はありますか、それとも単に「ATMが実装されていない」のですか?
4

1 に答える 1

0

コメントに記載されているように、可能な計画があります。

2 番目の質問については、「ちょうど今」と答えたいと思います。

開発者が明確な理由を持っている場合、この機能を持たないのは不合理だと思います。はい、賢明に使用する必要がありますが、API を使用する必要はありませんか?

すべてのエンティティが別のエンティティに直接関連付けられているわけではないため、これを制限しても意味がありません。エンティティを参照する必要がある がある場合、Addressこれがエンティティを参照する単一のプロパティと異なるのはなぜですか?

このコンテキストでの複合型は、単純型と同じです。おそらく、複合型は、特定のコンテキストでは「再利用可能」であると識別できます。しかし、DDD の「ルール」の下では、複合型がエンティティを参照できない本当の理由はないようです。

于 2012-08-25T22:44:01.353 に答える