2013-06-29 3 views
1

Я использую ниже код войти пользователь в моей WinForm приложениеEntity Framework отложенной загрузки вне контекста

public static Boolean Attempt(String username, String password, bool salted = false) 
{ 
     using (InventorySystemEntities context = new InventorySystemEntities(new ConfigurationManager().ConnectionString)) 
     { 
      password = password.ToMD5(salted); 

      User = context.Users.SingleOrDefault(u => u.UserName == username 
           && u.Password == password && u.IsEnabled == true); 
      return User != null ? true : false; 
     } 
} 

есть способ получить доступ к данным после того, как контекст были захоронены? как использовать новый контекст?

User test = Auth.Attempt(txtUsername.Text, txtPassword.Text); 

//is there a way to access this? 
test.UserGroup.Name; 
+0

Вы не можете. Если вы знаете, что вам нужно отношение, вы должны загрузить его с нетерпением. Или сохраните свой контекст живым (то есть, если вы хотите получить отношение через класс). –

ответ

1

Вы можете использовать явной загрузки для извлечения свойства навигации с новым контекстом:

public static void LoadUserGroup(User user) 
{ 
    using (InventorySystemEntities context = new InventorySystemEntities(
     new ConfigurationManager().ConnectionString)) 
    { 
     context.Users.Attach(user); 
     context.Entry(user).Reference(u => u.UserGroup).Load(); 
    } 
} 

Тогда вы можете получить доступ к свойствам в UserGroup:

User test = Auth.Attempt(txtUsername.Text, txtPassword.Text); 

//... 

Auth.LoadUserGroup(test); 
test.UserGroup.Name; 

без создания новый контекст невозможно перейти к UserGroup.

Смежные вопросы