gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:13:22 25 4
gpt4 key购买 nike

在我的应用程序中,我决定使用 EF6 而不是我习惯使用的 SQL 连接器。问题是当我使用

 public MainDatabase() : base("Database")
{
Configuration.AutoDetectChangesEnabled = false;
Configuration.ValidateOnSaveEnabled = false;
Configuration.LazyLoadingEnabled = true;
}

模型类是

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 可能会导致您丢失范围。因此,您必须在数据库上下文中包含您的实体对象

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

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

关于c# - EF6 不保存对相关属性的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52717084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com