0
我有一個控制器操作,它在更改時將數據保存到db。模型包含子文件,但它們不會保存到數據庫中。數據來自服務器,文件從請求中添加到模型中,但它不會保存。沒有錯誤發生。實體框架不會在編輯時保存子文件
這是我的模型:
public class Guest
{
public Guest()
{
this.Files = new List<File>();
}
public int Id { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
public string Email { get; set; }
public string Tel { get; set; }
public int CompanyId { get; set; }
public int Votes { get; set; }
public virtual ICollection<File> Files {get; set;}
}
這是我的VM
public class GuestViewModel
{
public Guest Guest { get; set; }
public IEnumerable<SelectListItem> Companies { get; set; }
}
,這是控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(GuestViewModel guestViewModel, HttpPostedFileBase upload)
{
if (upload != null && upload.ContentLength > 0)
{
var avatar = new File
{
FileName = System.IO.Path.GetFileName(upload.FileName),
FileType = FileType.Picture,
ContentType = upload.ContentType
};
using (var reader = new System.IO.BinaryReader(upload.InputStream))
{
avatar.Content = reader.ReadBytes(upload.ContentLength);
}
guestViewModel.Guest.Files = new List<File> { avatar };
}
if (ModelState.IsValid)
{
Guest guest = new Guest();
guest = guestViewModel.Guest;
_db.Entry(guest).State = EntityState.Modified;
_db.SaveChanges();
return RedirectToAction("Index");
}
return View(guestViewModel);
}
任何幫助表示讚賞。
嗨,是的。如果我聲明'_db.Entry(guest).State = EntityState.Modified;'它會有幫助在我將這個文件加入模型之後,它就被保存了。但是,如果我想更改當前文件並因此分配EntityState.Modified,則會導致'_db.SaveChanges();'錯誤說明我修改了(0)行。你知道如何解決這個問題嗎? –