实体框架数据库更新

凯文

例外:

  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

Automapper,实体框架更新数据库

来自分类Dev

实体框架更新数据库

来自分类Dev

身份实体框架库-更新数据库[MySQL]

来自分类Dev

在并发数据库更新时锁定实体框架代码

来自分类常见问题

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

来自分类Dev

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

来自分类Dev

实体框架数据库更新优先多重性冲突

来自分类Dev

如何使用实体框架从DataGrid更新数据库

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

实体框架-更新数据库-不创建数据库

来自分类Dev

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

来自分类Dev

实体框架数据库多对多

来自分类Dev

测试实体框架数据库连接

来自分类Dev

实体框架Sqlite数据库:NotSupportedException

来自分类Dev

实体框架支持多数据库

来自分类Dev

实体框架数据库连接错误

来自分类Dev

实体框架数据库表关联

来自分类Dev

实体框架5数据库请求

来自分类Dev

实体框架数据库差异