私のコードは簡単なようです:
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.
...それは一体何の意味ですか?私が考えることができる唯一のことは、これにはプライベートセッターがあり、主キーとして、データベースで生成されるはずであるにもかかわらずnewUser
、値が 0 であることを示していることです。しかし、それが問題である場合、単純に を使用して任意の EF データベースにオブジェクトを挿入することはできません。だから私は混乱しています。userID
userID
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
登録フォームからコントローラーにデータを伝達するために、文字列プロパティのみを持つ単なる ViewModel です。
userRep
は私のユーザー リポジトリです。