我的代码看起来很简单:
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
带有内部异常值的 a 表示:
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
是我的用户存储库。