Моя база данных настроена с таблицей Entity, которая имеет свойство навигации Ref_Type (и FK, которое ссылается на TypeID). Таблица типов, имеет Ref_Department, ту же настройку FK. Наконец, таблица Департамента имеет Ref_Locale и ту же настройку FK.Lazy Загрузка и несколько ссылок
Я сохраняю объекты в списке, который является свойством одноэлементного. Он создается следующим образом;
private Singleton()
{
using (Database db = new Database())
{
List<Entities> EntityList = db.Entities.ToList<Entities>();
}
}
Это нормально, свойства навигации ВСЕ загружаются, и я могу получить доступ к любому из них. Проблема возникает, когда я обновляю запись Entity следующим образом;
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>();
, как в моем конструкторе, без кубиков. Как вы можете видеть, я также пытался отключить LazyLoading (я подумал, что мне может потребоваться вызвать SaveChanges(), чтобы он действительно применил флаг). Я также попробовал .Include («Ref_Department»), но он просто жалуется, что он не существует для Entities, что имеет смысл.
Newent, что я перехожу к методу UpdateEntity не Ref_Type инициализирован, я работаю в предположении, что ничего не изменилось в методе UpdateEntity бы просто остаться такой же ...
Так что теперь я m в немного потери относительно того, что происходит и как это исправить. Если бы кто-нибудь мог объяснить, где я ошибаюсь, или дать мне несколько указаний о том, как исправить мой код, чтобы он работал, это было бы здорово.
Вы получаете его, когда вы включили ленивую загрузку в методе RefreshEntities() –
По умолчанию включена ленивая загрузка ... однако я только что нашел решение и опубликую его в ближайшее время. – Trent