【发布时间】:2019-08-15 20:23:55
【问题描述】:
在this documentation 之后,我正在尝试创建一些具有自有类型属性的实体:
[Owned]
public class StreetAddress
{
public string Street { get; set; }
public string City { get; set; }
}
public class Order
{
public int Id { get; set; }
public StreetAddress BillingAddress { get; set; }
public StreetAddress ShippingAddress { get; set; }
}
按照惯例,EF 会在实体 Order 中创建以下属性:
BillingAddress_Street
BillingAddress_City
ShippingAddress_Street
ShippingAddress_City
我知道有一种方法可以重命名列:
modelBuilder.Entity<Order>().OwnsOne(
o => o.ShippingAddress,
sa =>
{
sa.Property(p => p.Street).HasColumnName("ShipsToStreet");
sa.Property(p => p.City).HasColumnName("ShipsToCity");
});
但是,这意味着我需要对将生成的每个属性都使用它。在我看来,这正是我想通过首先使用拥有的类型来避免的。
我想做的是创建一个自定义约定,但是,也许使用模型构建器并明确告诉他如何命名这些属性以摆脱下划线等。
我尝试深入研究 modelBuilder 属性,尝试获取该拥有类型的所有实体,但这似乎不起作用。
有没有办法解决这个问题?
【问题讨论】:
标签: c# ef-code-first entity-framework-core entity-framework-migrations owned-types