MVC4 を使用して ASP.net Web アプリケーションを開発するのに忙しく、db にいくつかの変更を保存しようとすると、この奇妙なエラーが発生しました。このコードは、コントローラーの 1 つにあります。以下のコードでは、_db.Save() が呼び出されたときに DbEntityValidationException が発生し、次に 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; }
}