Entity Framework Core是否支持复合类型?

问题描述 投票:0回答:1

我正在将一个较旧的Entity Framework应用程序移植到EF Core。在旧的应用程序中,可以自由使用审计信息:

public class Audit
{
    public string CreatedBy { get; set; }
    public DateTime? CreatedDt { get; set; }
    public string ModifiedBy { get; set; }
    public DateTime? ModifiedDt { get; set; }
}

这个类嵌入在DbContext中的许多实体中,如下所示:

public class Order
{
    public decimal quantity { get; set; }
    public Guid SecurityId { get; set; }
    public decimal price { get; set; }
    public Audit Audit { get; set; }
}

旧EF对嵌入式类的使用没有问题,但实体框架核心不喜欢它。它迫使我为嵌入式类Audit创建一个索引。

System.InvalidOperationException: 'The entity type 'Audit' requires a primary key to be defined.'

关于这是否在新EF中受支持的任何想法,如果是,如何绕过密钥的要求?

c# entity-framework-core
1个回答
2
投票

我相信你正在寻找“拥有实体类型”

文件:https://docs.microsoft.com/en-us/ef/core/modeling/owned-entities

public class StreetAddress
{
    public string Street { get; set; }
    public string City { get; set; }
}

public class Order
{
    public int Id { get; set; }
    public StreetAddress ShippingAddress { get; set; }
}

// OnModelCreating
modelBuilder.Entity<Order>().OwnsOne(p => p.ShippingAddress);

免责声明:我是Entity Framework Classic项目的所有者

轻松移植应用程序的另一种方法是使用EF Classic。它是一个EF6分支,也支持.NET Core

© www.soinside.com 2019 - 2024. All rights reserved.