我正忙于使用 MVC4 开发一个 ASP.net Web 应用程序,并在尝试将一些更改保存到数据库时遇到了这个奇怪的错误。这段代码在我的一个控制器中。下面的代码在调用 _db.Save() 时会导致 DbEntityValidationException,而 _db.Save() 又会调用 SaveChanges()。我正在使用 EntityFramework V5。
Document document = _db.Documents.SingleOrDefault(x => x.ID == doc.ID);
if (document != null)
{
document.Location = idPath;
_db.Save();
}
异常消息:
但是:当我使用以下代码时,我没有任何异常,并且路径成功保存到数据库。
Document document = _db.Documents.FirstOrDefault(x => x.ID == doc.ID);
if (document != null)
{
// Needed for SaveChanges to work
var x = document.Type;
document.Location = idPath;
_db.Save();
}
为什么会发生这种情况?可能是因为我的 Documents 集合是 List 类型的吗?请注意,我发现错误是由 Type 属性引起的。
下面是我的 Document 类的结构:
[Table("Document")]
public class Document
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public virtual int ID { get; set; }
[Required]
public virtual string Name { get; set; }
public virtual string Location { get; set; }
[Required]
public virtual DocumentType Type { get; set; }
[NotMapped]
public virtual HttpPostedFileBase File{ get; set; }
}