繁体   English   中英

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

[英]EF6 not saving changes to related properties

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

使用UnitOfWork可能会导致您丢失范围。 因此,您必须在db上下文中包含实体对象

var entry = _context.Entry(entity);
if (entry.State == EntityState.Detached)
{
    var dbset = _context.Set<EntityType>();
    dbset.Attach(entity);
}

entry.state = EntityState.Modified;
_context.SaveChanges();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM