我正在尝试使用附件使用EF 5.x进行更新。这个表格有其他必需的字段,但它是一个现有的行。所以我试图更新没有任何获取。用户标识是表的主键。我正在尝试更新状态。但它会抛出一个EntityValidationErrors说需要密码,这是另一个必填字段,但不是主键。因为这是对现有行的更新,为什么您需要提供需要更新的requried字段?附加更新实体框架
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);
}
}
}
}
您在第一行创建一个新的'webUser'并且不从数据库中获取一个。尝试设置一个断点,看看'webUser's'的密码是不是'null'。 – Yoav
我并不想取数据。因为我打算做一个更新,我已经有一个主键 –