Ich habe zwei Entitäten (SaleInvoice und SaleInvoiceDetail) mit einer zu vielen Beziehungen. Dieser Code, den ich hinzugefügt habe, funktioniert, aber ich frage mich, was ist die beste Methode, um Werte von dieser Art von Navigationseigenschaft (in meinem Fall Liste von SaleInvoiceDetails) zu aktualisieren oder zu löschen. Was ist der beste Weg, das zu tun?Best Practice Aktualisieren und Löschen einer Entität mit Navigationseigenschaft
private void bbUpdate_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var saleInvoiceInDb= _dbContext.SaleInvoices.Find(_id);
if (saleInvoiceInDb == null) return;
var saleInvoiceDetails = ((IEnumerable) gvSaleInvoiceDetails.DataSource).Cast<SaleInvoiceDetail>().ToList();
using (var context = new ErpDbContext())
{
foreach (var saleInvoiceDetail in saleInvoiceDetails)
{
if (saleInvoiceDetail.Id != 0)
{
var invoiceDetailInDb = context.SaleInvoiceDetails.Find(saleInvoiceDetail.Id);
invoiceDetailInDb = saleInvoiceDetail;
invoiceDetailInDb.SaleInvoiceId = saleInvoiceInDb.Id;
}
else
{
saleInvoiceDetail.SaleInvoiceId = saleInvoiceInDb.Id;
context.SaleInvoiceDetails.Add(saleInvoiceDetail);
}
context.SaveChanges();
}
}
saleInvoiceInDb.CompleteDateTime = DateTime.Today;
saleInvoiceInDb.ContranctCode = "";
saleInvoiceInDb.DateTimeAdded = DateTime.Now;
saleInvoiceInDb.DateTimeUpdated = DateTime.Now;
saleInvoiceInDb.DeliveryDateTime = txtDeliveryDate.DateTime;
saleInvoiceInDb.DueDateTime = txtDueDateTime.DateTime;
saleInvoiceInDb.InvoiceDescription = txtDescription.Text;
saleInvoiceInDb.InvoiceToAdress = txtinvoiceToAdress.Text;
saleInvoiceInDb.Period = new DateTime(txtPeriod.DateTime.Year, txtPeriod.DateTime.Month, 1);
saleInvoiceInDb.SaleType = txtSoType.Text;
saleInvoiceInDb.Status = (byte)txtStatus.ItemIndex;
saleInvoiceInDb.SupplierId = _supplierId;
saleInvoiceInDb.SupplierCode = txtSupplierCode.Text;
saleInvoiceInDb.SupplierInvoiceReference = "";
saleInvoiceInDb.TransactionDateTime = txtTransactionDate.DateTime;
saleInvoiceInDb.OrderDate = txtOrderDate.DateTime;
saleInvoiceInDb.OrderPeriod = new DateTime(txtOrderDate.DateTime.Year, txtOrderDate.DateTime.Month, 1);
saleInvoiceInDb.UserAdded = clsUserProfile.US_LOGIN;
saleInvoiceInDb.UserUpdated = clsUserProfile.US_LOGIN;
_dbContext.SaveChanges();
Messages.Information("Invoice updated successfully");
}
}
Eine Zeit, sagte ein Sprecher, Stellen Sie sich vor, wenn Sie mit 'cough' zu einem Arzt gehen. Dann, ein Jahr später, kommst du mit 'Fieber' zurück. Doktor öffnet Ihren Fall, löscht "Husten" und fügt "Fieber" hinzu. Mit anderen Worten, registrieren Sie Ihre Transaktionen irgendwo ... –