8 messaggi dal 05 novembre 2010
Buongiorno forum,
devo mappare una tabella molti a molti.

Ecco le mie classi:

public class User
{
public int Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }

public ICollection<Group> Groups { get; set; }
}

public class Group
{
public int Id { get; set; }
public string Name { get; set; }
public string Notes { get; set; }

public bool IsActive { get; set; }

public ICollection<User> Users { get; set; }
}

Dentro alla class che estendi il DbContext inserisco:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Group>()
.HasMany(c => c.Users)
.WithMany(p => p.Groups)
.Map(m =>
{
m.MapLeftKey("GroupID");
m.MapRightKey("UserID");
m.ToTable("UserGroup");
});
}

Il mio problema è che la tabella UserGroup oltre ad avere le due colonne UserID e GroupID ha anche altre colonne. Come faccio a mapparle? E in caso volessi aggiungere una relazione come posso fare?

Grazie mille,
Luigi.
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao, non mi sono mai trovato in questa situazione quindi non sono sicuro che sia il consiglio giusto ma... hai valutato di creare una classe UserGroup, specie in virtù del fatto che ha dei campi "suoi"? Stabilisci una relazione uno-a-molti tra User e UserGroup e poi un'altra relazione uno-a-molti tra Group e UserGroup, così saresti libero di modellare la classe come credi e di creare altre relazioni che la coinvolgono. Avere una entità "intermedia" è un po' ciò che succedeva usando Linq to Sql, dato che non ha un supporto nativo per le relazioni molti-a-molti.

Enjoy learning and just keep making
8 messaggi dal 05 novembre 2010
Grazie mille per la risposta.

Si in quel caso funziona. Solo che se sono in User e voglio accedere ai gruppi non posso più usare .Include(u => u.Groups) ma devo per forza fare una query un po più "complessa". Volevo poter accedere in modo più semplice ai gruppi dell'utente.

Vorrei creare una struttura un po più "semplice" per chi dovrà usarla in altri progetti, senza dover sapere che su DB esiste quella struttura.

Attualmente me ne sto fregando dei campi in più della tabella molti-a-molti e in caso devo fare una insert o accedere agli altri dati della tabella uso una stored procedure (anche se non mi fa ancora impazzire la soluzione :P).

Grazie mille,
Luigi.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.