有关MSDN的文档对此主题非常清楚:"ComplexTypes不能包含关联“。
在阅读复杂类型时,最常用的示例是Address 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类型本身上定义国家协会,这将使整个地址-CT毫无用处。
我们目前正在使用NHibernate建立一个项目,因为EF缺乏我们的项目所需的一些功能,但这很可能在EF 6中得到支持。考虑到EF的快速发展和最近宣布的开源模型,我们希望在未来保持从NH到EF的可能的迁移。在NHibernate ComplexTypes ("Components")中,确实支持关联,因此,如果我们现在将它们与NH一起使用,那么迁移到EF是不容易的。
我想知道这是否目前的限制?
发布于 2012-08-25 22:44:01
如评论中所指出的,可能有一些计划。
关于第二个问题,我会说“此时此刻”。
如果发展商有明确的理由,我认为没有这个功能是不合理的。是的,它应该被明智地使用,但是不应该有任何API吗?
并不是每个实体都与另一个实体直接关联,因此限制这一点是没有意义的。如果我有一个必须引用一个实体的Address,为什么这与一个实体的单个属性不同?
此上下文中的复杂类型与简单类型没有什么不同。也许在某些情况下,复杂的类型可以被识别为“可重用”。但似乎在DDD“规则”下,复杂类型不能引用实体是没有真正原因的。
https://stackoverflow.com/questions/12090877
复制相似问题