Как я могу получить список со всеми данными и справочными данными из базы данных из статической функции? Я пытаюсь использовать db.Configuration.LazyLoadingEnabled = true;
, но функция возвращает только информацию о проекте, а справочные данные были нулевыми.
public static Project GetProject(Guid ProjectID)
{
if (!ProjectID.Equals(null))
{
using (var db = new dbEntity())
{
return db.Projects.Single(Project => Project.Id.Equals(ProjectID));
}
}
return null;
}
Ошибка:
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
Где я вызываю функцию:
@{var project = StaticMethods.GetProject(Guid.Parse(ViewContext.RouteData.Values["id"].ToString()));}
@for(var item in project.Users().ToList()){
....
}
@MichaelRandall - это автоматически сгенерированная модель из db ``` public System.Guid Id { get; задавать; } публичное имя строки { получить; задавать; } номер общедоступной строки { получить; задавать; } общедоступные виртуальные ICollection<Users> Users { get; задавать; } ```
Кроме того, if (ProjectID.Equals(null))
вызовет исключение NullReferenceException, если ProjectID
равно null
.
Вы можете использовать активную загрузку Linq и явно указать, что вы хотите включить в результирующий объектный граф. Стремительная загрузка достигается методом .Include()
.
Вы не предоставили классы моделей своих сущностей, но я предполагаю, что отношения являются один-один (у проекта есть ссылка как свойство). Следующий фрагмент загружает Project
со своим Reference
-свойством:
public static Project GetProject(Guid ProjectID)
{
if (!ProjectID.Equals(null))
{
using (var db = new dbEntity())
{
return db.Projects.Include(r => r.Reference).Single(Project => Project.Id.Equals(ProjectID));
}
}
return null;
}
Короче, ленивая загрузка является проблема.
Это вызвано следующим:
Project
Вам нужно будет сделать одно из следующих действий:
Project
использует.
Какова структура
Project