Я пытаюсь изменить одно логическое свойство для моей сущности Invoice.
Это мой класс:
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 для всех объектов внешнего ключа, и нет пропущенных ссылок.Кроме того, это работает на моем локальном компьютере, поэтому я уверен, что объект не был изменен другими источниками, кроме моего браузера.
Любая помощь очень ценится.