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)行。你知道如何解决这个问题吗? –