我想使用Entity Framework更新我的表格。但是,我收到了一个错误。
我的EfRepositoryBase
班正在实施IEntityRepository
。这种方法有什么问题?
public bool UpdateWithProperty(TEntity entity, params Expression<Func<TEntity, object>>[] properties)
{
using (var context = new TContext())
{
context.Set<TEntity>().Attach(entity);
var updatedEntity = context.Entry(entity);
foreach (var property in properties)
{
updatedEntity.Property(property).IsModified = true;
}
updatedEntity.State = EntityState.Modified;
context.SaveChanges();
}
return true;
}
错误:
无法将值NULL插入列&#39; UserName&#39;,table&#39; Nextt.dbo.Users&#39;列不允许空值。更新失败。
答案 0 :(得分:0)
你可以这样使用。
db.context.Attach(obj);
DbEntityEntry entry = db.Entry(obj);
foreach (var proprty in entry.OriginalValues.PropertyNames)
{
if(entry.CurrentValues.GetValue<object>(proprty) != null)
if (!object.Equals(entry.GetDatabaseValues().GetValue<object>(proprty), entry.CurrentValues.GetValue<object>(proprty)))
{
entry.Property(proprty).IsModified = true;
}
}
db.SaveChanges();