我在 EF Core 中设置了几个值对象(DDD 范式)作为拥有的类型。
EF Core 支持以一种方式配置拥有类型,它会通过该Owned()方法自动将对给定类型的所有引用视为拥有类型。
但是,我似乎找不到一种方法来以类似的集中方式指定它们的配置,尤其是值转换。
{ // Configure value objects as owned types.
builder.Owned(typeof(Money));
builder.Owned(typeof(Currency));
builder.Owned(typeof(Address));
builder.Owned(typeof(Mass));
builder.Owned(typeof(MassUnit));
// Store and restore mass unit as symbol.
builder.Entity<Product>()
.OwnsOne(p => p.Mass, c => c.Property(m => m.Unit)
.HasConversion(
u => u.Symbol,
s => MassUnit.FromSymbol(s))
.HasMaxLength(3)
);
}
如上所见,为 配置了一个值转换MassUnit,它是一个嵌套在 中的值对象Mass。
但是对于所有使用值对象的地方,我必须手动执行此操作。例如,我已经Money在 3 个不同的地方使用该类型,并且该类型包含Currency,我希望为其配置类似的值转换。
是否有任何(好的)方法来为拥有的类型指定一般的、域范围的配置?
我已经尝试builder.Entity<Mass>().Property(m => m.Unit).HasConversion(..)通过Entity<>.