Я пытаюсь сделать мой код работы с Injection Dependency, но у меня есть несколько проблем.Entity Framework dbContext находится слишком рано
У меня есть следующий код, который извлекает пользователя и связанные с ним роли.
public virtual User GetUser(string username,string password,evolutiondbEntities context, IUserRole userRoleRepository)
{
User systemUser = new User();
using(context)
{
systemUser = (from u in context.Users where u.Username == username && u.UserPassword == password select u).FirstOrDefault();
List<IUserRole> roleList = userRoleRepository.GetRoles(systemUser.UserID);
systemUser._roles = roleList;
}
return systemUser;
}
Код для метода GetRoles выглядит следующим образом
public List<IUserRole> GetRoles(string userID,evolutiondbEntities context)
{
List<IUserRole> roleList = new List<IUserRole>();
using(context)
{
roleList = (from r in context.UserRoles where r.UserID == userID select r).ToList<IUserRole>();
}
return roleList;
}
код выбирает пользователь правильно, но тогда, когда он называет GetRoles() метод появляется контекст утилизированы и поэтому, следовательно, не может ,
ПРИМЕЧАНИЕ: Я знаю, что я должен передавать интерфейс для контекста, но пока у меня пока что еще нет.
Вы должны вставить контекст в свою службу и использовать его без блока 'using', как в конце блока' using', в котором находится контекст. –
Могу ли я использовать блок-блок в точке инъекции? Я подумал, что рекомендуется использовать блок, так как он завершает работу после операций? – coolblue2000
Контейнер ioc избавится от контекста, когда он подходит (в конце запроса) –