我有一个代表公司的实体:
class Company {
public Guid Id { get; set; }
public string Name { get; set; }
...
public string Address { get; set; }
public string City { get; set; }
}
我想重构并引入一个新的类Location
,它将包含地址和 City 。因此,重构的代码应该如下所示:
class Company {
public Guid Id { get; set; }
public string Name { get; set; }
...
public Location Location { get; set; }
}
问题是EF请求ID
的{{1}}属性并为其创建一个表。
我想在Location
内展平Location
,以便SQL表看起来与重构前一样。
我认为Company
并不是真正的实体,它更像是Location
使用的帮助类。
我该如何做到这一点? 另外,如果你认为这是坏的事情,请告诉我原因:)
答案 0 :(得分:0)
我遇到了同样的问题。几个小时后,我找到了解决方法。
为您的DbContext方法OnModelCreating覆盖:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>().OwnsOne(typeof(Location), "Location");
base.OnModelCreating(modelBuilder);
}
所以这里的主要方法 OwnsOne 。 您将找到更多信息here