EF6不保存对相关属性的更改

时间:2018-10-09 08:58:20

标签: c# entity-framework-6

在我的应用程序中,我决定使用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;
        }

1 个答案:

答案 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();