我正在将一个较旧的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中受支持的任何想法,如果是,如何绕过密钥的要求?
我相信你正在寻找“拥有实体类型”
文件: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