【发布时间】:2020-06-14 09:29:54
【问题描述】:
我正在.net core 3.1 中开发一个 REST API
我有一个实体购物车项目:
public class ShoppingCartItem
{
[Key]
public int Id { get; set; }
[Column("ticket_id")]
public int? TicketId { get; set; }
[Column("shopping_cart_id")]
public int ShoppingCartId { get; set; }
[Column("created_at")]
public DateTime CreatedAt { get; set; }
[Column("updated_at")]
public DateTime UpdatedAt { get; set; }
[ForeignKey(nameof(TicketId))]
public Ticket Ticket { get; set; }
[ForeignKey(nameof(ShoppingCartId))]
public ShoppingCart ShoppingCart { get; set; }
public ShoppingCartItem() { }
}
}
我使用 EF 核心作为 ORM,所以我创建了我的迁移,但是当我尝试更新数据库时出现下一个错误
引入 FOREIGN KEY 约束 表“ShoppingCartItem”上的“FK_ShoppingCartItem_Tikcet_ticket_id”可能 导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。可以 不创建约束或索引。查看以前的错误。
通过研究,我在 DataContext 中添加了下一行:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<ShoppingCartItem>().HasOne<Ticket>(t => t.Ticket).WithMany().HasForeignKey(s => s.TicketId).OnDelete(DeleteBehavior.Restrict);
}
但是错误仍然存在,我不太确定这是否正确(我是这个框架的菜鸟)。你知道我做错了什么吗?
这是我的票实体:
public class Ticket
{
[Key]
public int Id { get; set; }
[Column("folio")]
public string Folio { get; set; }
[Column("status")]
public string Status { get; set; }
[Column("is_winner")]
public bool IsWinner { get; set; }
[Column("custom_name")]
public string CustomName { get; set; }
[Column("contestant_id")]
public int ContestantId { get; set; }
[Column("contest_id")]
public int ContestId { get; set; }
[ForeignKey(nameof(ContestantId))]
public Contestant Contestant { get; set; }
[ForeignKey(nameof(ContestId))]
public Contest Contest { get; set; }
[Column("created_at")]
public DateTime CreatedAt { get; set; }
[Column("updated_at")]
public DateTime UpdatedAt { get; set; }
public Ticket() { }
}
【问题讨论】:
标签: c# .net-core entity-framework-core