Lui*_*reu 5 c# domain-driven-design entity-framework value-objects complextype
EF 6(代码优先)是否支持复杂类型集合(Value Object集合)映射?我知道它支持复杂类型,但还没有找到一个我们有一组复杂类型的例子.
例如,假设您有一个名为Student的实体,该实体具有一组联系人.对于NH,我可以简单地说学生有一组联系人,而联系人是一个组件(相当于ef中的复杂类型).这可以通过EF完成而不改变与实体的联系吗?
显然 NHibernate 在这方面更加灵活,因为在撰写本文时(EF6.2 和 EF Core 2.1),EF6 和 EF Core 都不支持复杂(或更一般的基元或值对象)类型集合映射。
EF Core 更糟糕,因为Owned Entity Types据称是 EF Complex Types 的替代品,实际上具有更多类似实体的行为(从更改跟踪的角度来看),并且不能用作 DDD 不可变多属性值对象。
我知道的唯一解决方法是将某种序列化格式(例如 XML、JSON、二进制等)的值对象/集合表示映射到单个数据库字符串/二进制列。虽然这适用于读取/存储数据,但它缺乏查询功能,因此 IMO 不是一个认真的选择。
说到 EF6,我认为它永远不会得到这种支持。EF6基本上处于维护模式,未来不会得到重大改进。
EF Core 在这方面看起来更有前途,因为对拥有实体集合的支持计划在下一个 EF 2.2 版本中提供。然而,尚不清楚他们将如何实现它们(最初),并且考虑到他们如何实现拥有的类型,这可能不是您期望的方式,因此不能提前说明它们是否适用于值对象收集场景。
我知道这不是你想要的答案,但这就是现实。