EF 6:映射复杂类型集合?

Lui*_*reu 5 c# domain-driven-design entity-framework value-objects complextype

EF 6(代码优先)是否支持复杂类型集合(Value Object集合)映射?我知道它支持复杂类型,但还没有找到一个我们有一组复杂类型的例子.

例如,假设您有一个名为Student的实体,该实体具有一组联系人.对于NH,我可以简单地说学生有一组联系人,而联系人是一个组件(相当于ef中的复杂类型).这可以通过EF完成而不改变与实体的联系吗?

Iva*_*oev 2

显然 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 版本中提供。然而,尚不清楚他们将如何实现它们(最初),并且考虑到他们如何实现拥有的类型,这可能不是您期望的方式,因此不能提前说明它们是否适用于值对象收集场景。

我知道这不是你想要的答案,但这就是现实。