私のコードは簡単なようだ:ASP.NET MVC 3、コードファーストEF:OriginalValues?
bool rv = false;
var results = from user in Users
where user.userName.Equals(newUser.userName)
select user;
if (results.Count() == 0)
{
this.context.Users.Add(newUser);
this.context.SaveChanges();
rv = true;
}
return rv;
しかし、これは言う内部例外値で
DbEntityValidationException
が発生します。
OriginalValues cannot be used for entities in the Added state.
を...ということでも何を意味するのでしょうか?私が考えることができるのは、にプライベートセッターがあり、userID
(プライマリキーとして)がデータベース生成されているにもかかわらず、newUser
の値が0であるということだけです。しかし、がの場合は、これまでどおり任意のEFデータベースにオブジェクトを挿入するためにAdd()
を単に使用することはできません。だから私は混乱している。
これにいくつかの光を当てるのを助けることができる人に事前に感謝します。
ETA:newUser
は私のコントローラに次のコードによって作成されます。
[HttpPost]
public ActionResult CreateRegistration(FormVMRegistration newRegistration)
{
//draw info from form and add a new user to repository
User newUser = new User();
newUser.userName = newRegistration.userName;
newUser.screenName = newRegistration.screenName;
newUser.password = newRegistration.usersPW;
bool addSuccess = userRep.Add(newUser);
...
}
FormVMRegistration
は、コントローラにRegiostrationフォームからデータを伝えるために、何が、文字列プロパティを持つだけでViewModelにあります。 userRep
は私のユーザーリポジトリです。
UserIdは実際にはプライベートセッターを持っているはずです.EFはその値を保存時にこのプロパティに入れようとします。これはpublicでなければなりません –
newUserが作成される前のコードは何ですか? – emragins
@ルーク:私はフリーマンとサンダーソンの例に従っていましたが、私はそれを公開に変更し、とにかく同じ例外を受けています。 –