Sono nuovo di EF e sto cercando di ottenere una relazione unidirezionale molti-a-molti con il primo approccio al codice. Ad esempio, se ho seguito due classi (non il mio modello reale) con una relazione N * N tra di esse, ma nessuna proprietà di navigazione dal lato "Cliente".realizzazioni unidirezionali many-to-many con Code First Entity Framework
public class User {
public int UserId { get; set; }
public string Email { get; set; }
public ICollection TaggedCustomers { get; set; }
}
public class Customer {
public int CustomerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Il codice di mappatura sembra ...
modelBuilder.Entity()
.HasMany(r => r.TaggedCustomers)
.WithMany(c => c.ANavgiationPropertyWhichIDontWant)
.Map(m =>
{
m.MapLeftKey("UserId");
m.MapRightKey("CustomerId");
m.ToTable("BridgeTableForCustomerAndUser");
});
Questa sintassi costringermi ad avere "withmany" per l'entità "Cliente". Il seguente numero url, dice "Per convenzione, Code First interpreta sempre una relazione unidirezionale come uno-a-molti".
È possibile sovrascriverlo o dovrei utilizzare un altro approccio?
Grazie mille, quello che una soluzione semplice. Per salvarmi la faccia lo biasimerò per mancanza di documentazione e non per la mia ignoranza. –
È possibile farlo con gli attributi? – TDaver
@TDaver: No, gli attributi possono funzionare solo se si dispone di proprietà di navigazione su entrambe le estremità e non si prevede di controllare il nome e le colonne nella tabella di giunzione. –