我正在使用 .NEW 5 和物體框架作為 ORM。我想使用代碼優先的資料庫方法。
我有 2 個物體類:
public class PurnchaseOrderItem
{
public int Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
[ForeignKey("PurnchaseOrder")]
public int PurnchaseOrderId { get; set; }
public PurnchaseOrder PurnchaseOrder { get; set; }
}
public class PurnchaseOrder
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime CreationDate { get; set; }
public List<PurnchaseOrderItem> PurnchaseOrderItems { get; set; }
[NotMapped]
public double TotalPrice
{
get
{
return PurnchaseOrderItems.Sum(x => x.Price);
}
}
}
但是當我嘗試添加新的遷移時,我收到如下錯誤:
物體型別“串列”需要定義一個主鍵。如果您打算使用無密鑰物體型別,請在“OnModelCreating”中呼叫“HasNoKey”。有關無密鑰物體型別的詳細資訊,請參閱https://go.microsoft.com/fwlink/?linkid=2141943。
還有我的資料庫背景關系類:
public class ItemsAppDbContext : DbContext
{
public ItemsAppDbContext(DbContextOptions options) : base(options)
{
}
public DbSet<AppUser> Users { get; set; }
public DbSet<PurnchaseOrderItem> PurnchaseOrderItems { get; set; }
public DbSet<PurnchaseOrder> PurnchaseOrders { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<PurnchaseOrder>()
.HasOne(p => p.PurnchaseOrderItems)
.WithMany()
.OnDelete(DeleteBehavior.Cascade);
}
}
uj5u.com熱心網友回復:
在您的 ItemsAppDbContext 中更新以下代碼
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<PurnchaseOrder>()
.HasMany(p => p.PurnchaseOrderItems)
.WithOne(g => g.PurnchaseOrder).HasForeignKey(s=>s.PurnchaseOrderId)
.OnDelete(DeleteBehavior.Cascade);
}
閱讀本文以了解更多資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/459591.html
上一篇:物體框架更新條目重復鍵
