在MSDN上的文档关于这一主题明确: “复合类型不能包含关联”的ComplexType与协会
当阅读复杂的类型,最常用的例子就是地址的ComplexType:
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; }
}
正如您所看到的,我想在广告中添加关联到国家/地区着装ComplexType。不幸的是,这是不可能的。这使得完整的例子没有意义,因为我必须在Person类型本身上定义Country关联,这会使整个Address-CT无用。
我们目前正在使用NHibernate设置一个项目,因为EF缺乏我们项目所需的一些功能,但最有可能在EF 6中支持这些功能。考虑到EF和最近公布的开源模型的快速发展,我们希望保持从NH到EF可能的未来迁移。 在NHibernate ComplexTypes(“组件”)中支持关联,因此如果我们现在将它们用于NH,迁移到EF将不太可能。
我想知道这是否只是目前的限制?
- 是否有计划在未来支持这样的功能?
- 是否存在不支持此功能的明确原因,还是仅仅是“未实现atm”?
这是一个设计问题,您应该直接询问[ADO.NET团队](http://entityframework.codeplex.com/discussions)。 –
好的,我会在那里发布。 Thx为链接。 –
请记住,EF中的ComplexTypes是可重用的,因此多个实体可以具有相同ComplexType的属性。因此,在复杂类型的属性与另一个属性之间建立关联并不是真的可行,因为如果复杂类型在多个实体中使用,这样的关联可能不起作用。然而,如果实施的话,它可以工作的方式是定义一个协会,该协会将指向复杂类型的财产作为“终点”(就关系/相关终结财产而言)。 – Pawel