gpt4 book ai didi

c# - 同步更新调用期间乐观并发异常

转载 作者:行者123 更新时间:2023-11-29 15:57:01 25 4
gpt4 key购买 nike

我正在尝试修改我的发票实体上的单个 bool 属性。
这是我的类(class):

public class Invoice : SoftDeletableEntity, IIsActive
{
public Invoice()
{
IsEditable = true;
}

[ForeignKey("Booking")]
public int BookingId { get; set; }
public Booking Booking { get; set; }
[ForeignKey("Customer")]
public int CustomerId { get; set; }
public Customer Customer { get; set; }
public string OurReference { get; set; }
public string CustomerReference { get; set; }
public DateTime InvoiceDate { get; set; }
public string InvoiceNumber { get; set; }
[ForeignKey("AccountInformation")]
public int AccountInformationId { get; set; }
public AccountInformation AccountInformation { get; set; }
public string Summary { get; set; }
public List<InvoiceInformation> ImportantInformation { get; set; }
[ForeignKey("InvoiceItem")]
public List<int> InvoiceItemIds { get; set; }
public List<InvoiceLineItem> InvoiceLineItems { get; set; }

[ForeignKey("InvoiceDocument")]
public List<int> InvoiceDocumentIds { get; set; }
public List<InvoiceDocument> InvoiceDocuments { get; set; }
public string CreatedBy { get; set; }
public string Terms { get; set; }
public bool IsReversal { get; set; }
public bool IsEditable { get; set; }
public int? ParentInvoiceId { get; set; }
}

这些类将导出为格式化的 PDF。这个过程运行得很好,然后我有这个代码来检查 PDF 是否构建正确,然后如果导出成功,代码将发票设置为不可编辑,如下所示:

    var doc = pdf.CreateInvoicePdf(resultModel, user);
var bytes = GetPdfBytes(doc);

if (bytes != null)
{
result.IsEditable = false;
}

unitOfWork.Commit();

当我称之为“unitOfWork.Commit();”时我收到以下异常:

System.Data.Entity.Infrastructure.DbUpdateException: 'An error occurred while saving entities that do not expose foreign key properties for their relationships.  

内部异常:

Message "Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. See http://go.microsoft.com/fwlink/?LinkId=472540 for information on understanding and handling optimistic concurrency exceptions."

最近添加的外键引用是针对 CustomerId 的,但它的设置方式与所有其他外键一样。我已检查数据库中所有外键实体的 FK = 0,并且没有丢失引用。此外,它也在我的本地运行,因此我确信该实体没有被我的浏览器以外的来源修改。

非常感谢任何帮助。

最佳答案

以下是可能导致此类问题的一些可能原因:

  1. 您尝试使用主键 Id == 0 或其他默认值(Guid.Emptystring.空)。因此,请验证 Id 设置是否正确。
  2. 当您尝试创建新对象并告诉 EF 它已使用 EntityState.Modified 进行修改时。然后它将抛出此错误,因为数据库中尚不存在该错误。因此,尝试使用EntityState.Added
  3. 您尝试更新或删除一行,但该行不存在。

关于c# - 同步更新调用期间乐观并发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56401082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com