使用OwnsOne映射复杂类型时,sql列名称以属性名称为前缀。是否可以在映射中指定前缀名称?
这是我的映射:
e.OwnsOne(x => x.Attributes, cb =>
{
cb.OwnsOne(a => a.Supplier);
});
Run Code Online (Sandbox Code Playgroud)
我希望sql列以“ Attr_”而不是“ Attributes_”作为前缀。这可能吗?
您可以编写一个扩展方法来覆盖所有列的名称;
public static void 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(""));
Run Code Online (Sandbox Code Playgroud)
伊万·斯托耶夫(Ivan Stoev)对问题评论的回答:
它必须通过相应的
OwnsOne构建器操作参数来完成。例如.OwnsOne(e => e.Address, cb => { cb.Property(e => e.Postcode).HasColumnName("Postcode"); });
(将其设为社区维基,只需将问题标记为已回答。)
| 归档时间: |
|
| 查看次数: |
699 次 |
| 最近记录: |