在我的应用程序中,我决定使用EF6代替以前使用的SQL连接器。问题是当我使用
时 public MainDatabase() : base("Database")
{
Configuration.AutoDetectChangesEnabled = false;
Configuration.ValidateOnSaveEnabled = false;
Configuration.LazyLoadingEnabled = true;
}
Model类是
public class Hotel : BaseModel
{
private City City = null;
private HotelCategory HotelCategory;
private string Name = string.Empty;
private string Tel = string.Empty;
}
在UnitOfWork中,我有一个辅助方法
internal void SetState(BaseModel entity, EntityState state)
{
_context.Entry(entity).State = state;
_context.SaveChanges()
}
它仅保存对字符串的更改,而不保存相关属性的不同索引。
我在我的数据库中使用Code First
有什么办法可以更新相关属性的状态吗?
尝试了这个但没用
var entry = _context.Entry(entity);
entry.State = EntityState.Modified;
foreach (var name in entry.CurrentValues.PropertyNames)
{
entry.Property(name).IsModified = true;
}
答案 0 :(得分:0)
使用UnitOfWork可能会导致您缺少范围。因此,必须在数据库上下文中包含您的实体对象
var entry = _context.Entry(entity);
if (entry.State == EntityState.Detached)
{
var dbset = _context.Set<EntityType>();
dbset.Attach(entity);
}
entry.state = EntityState.Modified;
_context.SaveChanges();