我正在将一个较旧的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; }
}
Old EF对此嵌入式类的使用没有问题,但是Entity Framework Core不喜欢它。这迫使我为嵌入式类Audit创建索引。
System.InvalidOperationException: 'The entity type 'Audit' requires a primary key to be defined.'
关于新EF是否支持该功能的任何想法,如果可以,如何解决密钥要求?
答案 0 :(得分: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