我在 ASP.NET C# 项目中使用 Entity Framework Core。
我在数据库中有一个名为
Sales
的表,以及一个名为 HotSales
的视图。
该视图仅包含
Sales
表中的热销商品 + 使用 JOIN 来自另一个表的更多信息。
在
DbContext
类中,我每个人都有一个 DbSet
对象。
我尝试从
Sales
表中删除一行,如下所示:
Sale sale = _context.Sales.FindAsync(id);
_context.Sales.Remove(sale as Sale);
_context.SaveChanges();
我收到有关
HotSales
类型的错误:
实体类型“HotSales”未映射到表,因此实体无法持久化到数据库。在“OnModelCreating”中调用“ToTable”将其映射到表。
为什么 Entity Framework Core 将
Sales
对象识别为 HotSales
?如何删除该行?
问题可能出在上下文本身。您很可能已经创建了与 hotsales 表的 FK 关系。然后,删除时的某种级联效应无法正确传播到您可能定义的热销“表”。
请向我们展示 dbcontext 中的 和 实体定义的上下文代码。
仅凭这一点就可以告诉您出了什么问题。您的软件将视图视为表格。这就是您遇到的具体问题。