私は新しいプロジェクトを開始したばかりで、以前はEntity Frameworkで幸せな時間を過ごしたことがあり、最新バージョンでNugetを使用しました。エンティティを更新しようとするまで、すべてが順調でした。私は次のコードを持っています。
using (var c = new EFContext())
{
Data.User u = new Data.User() { UserId = UserId };
c.Users.Attach(u);
u.FailedPasswordAttemptCount = newFailedPasswordAttemptCount;
c.SaveChanges();
}
これはEF4で正常に機能しました。ただし、EF5では、ユーザーテーブル(UserName)にnull不可のフィールドがあるため、これはDbEntityValidationExceptionでクラップスします。
これを解決するには、空のUserNameを使用してData.Userオブジェクトを作成し、変更されたプロパティをEFに通知します。
using (var c = new EFContext())
{
Data.User u = new Data.User() { UserId = UserId, UserName = "" };
...
c.Entry(u).Property("FailedPasswordAttemptCount ").IsModified = true;
...
}
ただし、このテーブルや他の多数のテーブルにnull許容でないフィールドが追加されるため、これは特に管理しやすいようには見えません。
この質問は、Attach
から派生したエンティティに対してのみ機能することを示していEntityObject
ます。したがって、EF5オブジェクトはこれから派生していないと思います。
null許容でないすべての文字列フィールドを毎回指定しなくても、エンティティを更新する方法を誰もが知っています。
本当に明らかな何かが欠けているような気がします。