实体框架数据库更新

凯文

例外:

  HResult=0x80131501
  Message=An error occurred while updating the entries. See the inner exception for details.
  Source=EntityFramework
  StackTrace:
   at System.Data.Entity.Internal.InternalContext.SaveChanges()
   at System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
   at System.Data.Entity.DbContext.SaveChanges()
   at SQDCDashboard.Services.Services.WindowsOrderImporterService.ImportOrder(DateTime date) in C:\Users\ME\source\repos\SQDC Dashboard\SQDCDashboard\SQDCDashboard.Services\Services\WindowsOrderImporterService.cs:line 145
   at SQDCDashboardOrderImporterTester.Program.Main(String[] args) in C:\Users\ME\source\repos\SQDC Dashboard\SQDCDashboard\SQDCDashboardOrderImporterTester\Program.cs:line 11

Inner Exception 1:
UpdateException: An error occurred while updating the entries. See the inner exception for details.

Inner Exception 2:
SqlException: Violation of PRIMARY KEY constraint 'PK_dbo.ProductionLines'. Cannot insert duplicate key in object 'dbo.ProductionLines'. The duplicate key value is (ceae2692-ed1d-4902-8e16-781aba577130).
The statement has been terminated.

码:

    {
       Order ord = new Order
       {
          //ID and CreatedAt are being auto generated
          SerialNumber = serialNum,
          UnitNumber = unitNum,
          ProductionNumber = prodNum,
          MaterialNumber = materialNum,
          SalesNumber = salesNum,
          Location = Core.Enums.Location.Start,
          ProductionLineId = prodLineID, //Foreign Key
          ProdLine = prodLines.Where(x => x.Id == prodLineID).FirstOrDefault()
      };
      context.Orders.Add(ord);
      context.SaveChanges();
   } 

我正在尝试更新数据库以向其添加新订单。每个订单都链接到生产线,并包含其ID,然后是生产线。我相信这是正在发生的事情,是它正在尝试将其添加到ProductionLine表中,但只应添加Orders表。我不确定如何仅编辑Orders表。

楷模:

public class Order : BaseEntity
    {
        public string ProductionNumber { get; set; }
        public string SalesNumber { get; set; }
        public string MaterialNumber { get; set; }
        public string SerialNumber { get; set; }
        public string UnitNumber { get; set; }
        public DateTime? CompletionDate { get; set; }
        public Location Location { get; set; }
        public string ProductionLineId { get; set; }
        public ProductionLine ProdLine { get; set; }
    }
public class ProductionLine : BaseEntity
    {
        public string Name { get; set; }
        public double UPE { get; set; }
        public string ComputerName { get; set; }
        public bool ActiveLine { get; set; }
    }

解:

我没有将在其他using语句中查询的ProductionLine列表设置为不变。将其设置为不变会让EF知道它不需要更新,这意味着它没有尝试重复ID。

梅尔达德

实体框架插入具有添加状态的每个记录。因此,由于插入,您的实体也具有相同的状态。

您可以使用context.Entry(prodLines.Where(x => x.Id == prodLineID).FirstOrDefault())。State = EntityState.Unchanged设置状态。

不变:实体正在由上下文跟踪并且存在于数据库中,并且其属性值与数据库中的值未更改

您可以在“实体状态”和“保存更改”中查看有关此行为的更多信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

实体框架无法更新数据库

来自分类Dev

在实体框架中更新数据库

来自分类Dev

Automapper,实体框架更新数据库

来自分类Dev

实体框架更新数据库

来自分类Dev

实体框架核心-“更新数据库”不起作用

来自分类Dev

无法使用实体框架 CLI 更新数据库架构

来自分类Dev

实体框架-“从数据库更新”未添加表

来自分类Dev

更新数据库条目MVC实体框架

来自分类Dev

使用实体框架的导航属性更新数据库

来自分类Dev

实体框架不会更新Amazon RDS SQL数据库

来自分类Dev

实体框架核心更新-特定于数据库的迁移

来自分类Dev

实体框架核心,更新数据库不考虑属性

来自分类Dev

实体框架“从数据库更新模型,表成为关系

来自分类Dev

数据库迁移后更新实体框架EDMX模型

来自分类Dev

实体框架代码优先数据库未更新

来自分类Dev

使用DTO实体框架,如何更新数据库?

来自分类Dev

尝试先使用实体框架代码更新数据库

来自分类Dev

使用实体框架核心更新数据库中的列

来自分类Dev

实体框架迁移更新数据库成功,但未添加数据库列

来自分类Dev

实体框架5数据库请求

来自分类Dev

实体框架数据库差异

来自分类Dev

实体框架数据库多对多

来自分类Dev

实体框架数据库连接错误

来自分类Dev

强制实体框架查询数据库

来自分类Dev

实体框架数据库表关联

来自分类Dev

实体框架无法打开数据库

来自分类Dev

如何通过实体框架在数据库中插入更新多个数据

来自分类Dev

使用实体框架向现有数据库添加或更新数据

来自分类Dev

实体框架6更新数据库在卸载appdomain时引发错误