我的数据库设置有一个实体表,该表具有一个 Ref_Type 导航属性(以及一个引用 TypeID 的 FK)。Type 表有一个 Ref_Department,相同的 FK 设置。最后,Department 表具有 Ref_Locale 和相同的 FK 设置。
我将实体保存在一个列表中,这是一个单例的属性。它的创建如下;
private Singleton()
{
using (Database db = new Database())
{
List<Entities> EntityList = db.Entities.ToList<Entities>();
}
}
这很好,导航属性已全部加载,我可以访问其中任何一个。当我按如下方式更新实体条目时出现问题;
public void UpdateEntity(Entities oldEnt, Entities newEnt)
{
using (Database db = new Database())
{
Entities ent = db.Entities.Where(e => e.EntityName == oldEnt.EntityName).FirstOrDefault();
ent.EntityName = newEnt.EntityName;
ent.EntityEmail = newEnt.EntityEmail;
...
ent.EntityType_ID = newEnt.EntityType_ID;
db.SaveChanges();
}
RefreshEntities();
}
public void RefreshEntities()
{
using (Database db = new Database())
{
db.Configuration.LazyLoadingEnabled = false;
db.SaveChanges();
EntityList = db.Entities.Include("Ref_EntityType").Include("Ref_EntityPosition").ToList<Entities>();
}
}
Ref_Entity 被正确加载,但在 Ref_Entity 中,Ref_Department 只是空。我试过db.Entities.ToList<Entities>();
在我的构造函数中使用like,没有骰子。如您所见,我还尝试关闭 LazyLoading(我想我可能需要调用 SaveChanges() 才能实际应用标志)。我也尝试过 .Include("Ref_Department") 但它只是抱怨实体不存在它,这是有道理的。
我传递给 UpdateEntity 方法的 newEnt 没有初始化 Ref_Type,我假设在 UpdateEntity 方法中没有改变的任何东西都会保持不变......
所以现在我对发生了什么以及如何解决它有点茫然。如果有人可以帮助解释我哪里出错了,或者给我一些关于如何修复我的代码以使其工作的指示,那就太好了。