我正在尝试使用附加的 EF 5.x 对表进行更新。此表具有其他必需的字段,但它是现有行。所以我试图在没有任何获取的情况下进行更新。userid 是表的主键。我正在尝试更新状态。但它会抛出一个 EntityValidationErrors 说密码是必需的,这是另一个必填字段,但不是主键。因为这是对现有行的更新,为什么需要提供更新所需的字段?
var webUser = new WebUser() { UserId = webUserId, OnlineStatus = (sbyte)status };
using (var dbxupdate = new xEntities())
{
try
{
dbxupdate.WebUsers.Attach(webUser);
dbxupdate.Entry(webUser).State = EntityState.Modified;
dbxupdate.Entry(webUser).Property(x => x.OnlineStatus).IsModified = true;
dbxupdate.SaveChanges();
}
catch (DbEntityValidationException dbEx)
{
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
}
}
}
}