如何在Entity Framework Core 2.0中映射值对象

时间:2017-09-02 15:33:43

标签: c# entity-framework

考虑一个Customer实体,其中Resource个对象代表客户的徽标:

public class Customer
{
    public Guid Id { get; set; }

    public string CompanyName { get; set; }

    public Resource Logo { get; set; }
}

public class Resource
{
    public string Uri { get; set; }

    public string Name { get; set; }
}

这是我到目前为止所尝试的但是因为Logo是一个复杂的对象而得到错误:

var customer = modelBuilder.Entity<Customer>().ToTable("Customers");
customer.HasKey(c => c.Id);
customer.Property(c => c.CompanyName).HasColumnName("Company");
customer.Property(c => c.Logo);

如何将该资源与EF Core 2.0一起存储为值对象 客户表中?

2 个答案:

答案 0 :(得分:10)

如果您想共享同一个表,您只需定义一个拥有实体

modelBuilder.Entity<Customer>().OwnsOne(c => c.Logo);

按惯例,它只使用一个表。

答案 1 :(得分:0)

阅读更多关于它here有一个例子 使用“{1}}搜索”拥有的实体和表格拆分“