/ / Entity Framework 4.1 - wybierz Stowarzyszenie wiele do wielu - asp.net, asp.net-mvc-3, entity-framework-4.1

Entity Framework 4.1 - wybierz Stowarzyszenie wiele do wielu - asp.net, asp.net-mvc-3, entity-framework-4.1

Używam Entity Framwork 4.1 i MVC 3. Moje pytanie dotyczy łączenia tabel w Entity Framework. Stworzyłem trzy tabele

  1. Użytkownik - UserId, nazwa użytkownika
  2. Rola - ID roli, nazwa roli
  3. UserInRoles-UserId, RoleId

Wyciągnąłem te tabele do mojego pliku edmx, Pojawiają się tylko dwie tabele, tj. Użytkownik i rola z wieloma powiązaniami między dwoma.

Jeśli chcę uzyskać rolę użytkownika z tabeli UserInRoles, jakie jest podejście?

Zrobiłem coś takiego

var result = (from ar in roles
from au in users
where au.UserName == username
select new {});

To nie działa. Proszę pomóż.

Odpowiedzi:

1 dla odpowiedzi № 1

Jak można się domyślić, Entity Framework się łączyProste spojrzenie na takie stoły w tabelach nadrzędnych, aby ci pomóc. Nie będziesz w stanie uzyskać dostępu do tabeli wyszukiwania w swoim kodzie, ale zrobi to ciężkie podnoszenie i pozwoli ci poruszać się po takich stołach.

var result = (from ar in roles
where ar.Users.UserName == username
select ar);

Lub jeśli wolisz lambdas (osobiste preferencje):

var result = context.roles.Where(x => x.Users.UserName == username);


0 dla odpowiedzi nr 2

Powinny być połączone, jak przypuszczam:

var result =
from au in users
where au.UserName == username
select au.Roles;

Nie jestem pewien, czy domyślnie da ci pustą kolekcję. Może być konieczne ręczne pobranie kolekcji Role. (Prawdopodobnie result.Fetch (), ale nie jestem zbyt obeznany z tym.)

(Czy możesz też uzyskać dostęp do rzeczywistych pozycji UserInRole przechowywanych w bazie danych?)


0 dla odpowiedzi № 3

Struktura obiektu automatycznie generuje wiele do wielu relacji w modelu, gdy istnieje tylko tabela relacji z jednym udostępnionym kluczem podstawowym, które są kluczami obcymi do innych tabel.

Możesz dodać kolejną kolumnę do tej tabeli, aby dodać ją do swojego modelu lub wygenerować kolejny unikalny klucz dla relacji.

Przeczytaj więcej na ten temat tutaj: http://learnentityframework.com/LearnEntityFramework/tutorials/many-to-many-relationships-in-the-entity-data-model/