如何压扁'帮助' EF核心中具有一对一关系的类?

时间:2017-07-30 17:01:10

标签: c# entity-framework

我有一个代表公司的实体:

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使用的帮助类。

我该如何做到这一点? 另外,如果你认为这是的事情,请告诉我原因:)

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。几个小时后,我找到了解决方法。

为您的DbContext方法OnModelCreating覆盖:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Company>().OwnsOne(typeof(Location), "Location");
    base.OnModelCreating(modelBuilder);
}

所以这里的主要方法 OwnsOne 。 您将找到更多信息here