【发布时间】:2012-10-25 11:09:10
【问题描述】:
我的公司实体有这些课程
public class Company
{
public Company()
{
this.Users = new HashSet<User>();
this.Tools = new HashSet<Tool>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public virtual ICollection<User> Users { get; set; }
public virtual ICollection<Tool> Tools { get; set; }
[Required]
public virtual CompanyGroup CompanyGroup { get; set; }
}
public class CompanyDto
{
public string Name { get; set; }
public string Address { get; set; }
}
在 CompaniesController 中,我添加了一个带有 Id 参数的附加类,用于像这样的编辑/更新方法
public class CompanyViewEditModel : CompanyDto {
public int Id { get; set; }
}
编辑方法如下所示:
[HttpPost]
public ActionResult Edit(CompanyViewEditModel companyViewModel)
{
if (ModelState.IsValid)
{
var company = db.Companies.Find(companyViewModel.Id);
company.InjectFrom(companyViewModel);
db.Entry(company).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(companyViewModel);
}
InjectFrom 方法来自 ValueInjecter。
由于验证异常,只有 db.SaveChanges 调用失败,一切都按预期工作。通过对异常的一些挖掘,我发现他认为公司无效,因为字段 CompanyGroup 是必需的,但是如果我使用调试器查看公司变量,即使在 InjectFrom 调用之后一切似乎都很好。有对应的公司集团。
【问题讨论】:
-
你能告诉我
InjectFrom的出处吗?这很可能是出问题的地方。 -
源代码应该在此处可用:valueinjecter.codeplex.com/SourceControl/changeset/view/… 但如前所述.. 我认为 InjectFrom 不是我的问题.. 对象在调试器中看起来不错..
标签: asp.net-mvc entity-framework