我有一个发票实体,它有子发票日志实体。当我第一次创建发票并添加其 InvoiceLog 实体并保存时,它工作正常。但是,如果我随后编辑发票并尝试添加其他 InvoiceLog 实体,它会完全忽略新的 InvoiceLog 实体并且根本不保存它们。有什么想法我做错了吗?
//POST: /Secure/Invoices/Save/
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Save(Invoice invoice)
{
invoice.UpdateDate = DateTime.Now;
invoice.DeveloperID = Developer.DeveloperID;
invoice.InvoiceStatusID = (int)Enums.InvoiceStatus.Open;
if (invoice.InvoiceID == 0)
{//inserting new invoice.
DataContext.InvoiceData.Insert(invoice);
}
else
{//attaching existing invoice.
DataContext.InvoiceData.Attach(invoice);
}
AddHours(invoice);
//save changes.
DataContext.SaveChanges();
//redirect to invoice list.
return RedirectToAction("Index");
}
private void AddHours(Invoice invoice)
{
//get existing logs.
IQueryable<InvoiceLog> existingLogs = null;
if(invoice.InvoiceID > 0)
{
existingLogs = DataContext.InvoiceData.GetLogs(invoice.InvoiceID);
}
//create new logs.
var numDays = invoice.EndDate.Subtract(invoice.StartDate).TotalDays;
for (int k = 0; k <= numDays; k++)
{
//check if log already exists.
var existingLog = existingLogs.ToList().FindIndex(l => l.LogDate == invoice.StartDate.AddDays(k));
if (existingLog == -1)
{
//add new log.
var log = new InvoiceLog();
log.CreateDate = DateTime.Now;
log.UpdateDate = DateTime.Now;
log.Hours = 0;
log.InvoiceID = invoice.InvoiceID;
log.LogDate = invoice.StartDate.AddDays(k);
invoice.InvoiceLogs.Add(log);
}
}
}
谢谢,
贾斯汀
您可以尝试添加InvoiceLogs
附加之前的项目invoice
:
else
{//attaching existing invoice.
AddHours(invoice);
DataContext.InvoiceData.Attach(invoice);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)