使用OwnsOne映射复杂类型时,sql列名称以属性名称为前缀。是否可以在映射中指定前缀名称?
这是我的映射:
e.OwnsOne(x => x.Attributes, cb =>
{
cb.OwnsOne(a => a.Supplier);
});
我希望sql列以“Attr_”为前缀,而不是“Attributes_”。这可能吗?
答案 0 :(得分:2)
您可以编写扩展方法来覆盖所有列的名称;
public static WithPrefix<T, R>(this OwnedNavigationBuilder<T, R> builder, string prefix) where T:class where R:class
{
foreach (var p in builder.OwnedEntityType.GetProperties())
p.SetColumnName($"{prefix}{p.Name}");
}
.OwnsOne(e => e.Address, cb => cb.WithPrefix(""));
答案 1 :(得分:0)
伊凡·斯托耶夫(Ivan Stoev)在问题评论中的回答:
必须通过相应的
OwnsOne
构建器操作参数来完成。例如.OwnsOne(e => e.Address, cb => { cb.Property(e => e.Postcode).HasColumnName("Postcode"); });
(将其设为社区Wiki,只是将问题标记为已回答。)