Sto provando a collegare le tabelle di appartenenza di asp.net in un sito Web di asp.mvc 3. Ho seguito il tutorial nel libro di Steve Sanderson "Pro ASP.NET MVC 3 Framework" per il negozio di articoli sportivi e applicandolo alle tabelle che sono state generate dal membro di appartenenza.Mappatura delle tabelle di join in Entity Framework
Così ho una classe utente che assomiglia:
namespace Domain.Entities
{
public class User
{
public Guid UserId { get; set; }
public string UserName { get; set; }
public DateTime LastActivityDate;
public virtual ICollection<Role> Roles { get; set; }
}
public class Role
{
public Guid RoleId { get; set; }
public string RoleName { get; set; }
}
}
e una classe contesto che assomiglia a:
public class EFDbContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().ToTable("aspnet_users");
modelBuilder.Entity<Role>().ToTable("aspnet_roles");
}
}
ma ottengo un errore perché suppongo che è alla ricerca di un join tra queste due tabelle quando in realtà c'è una tabella di join (aspnet_UsersInRoles
) in mezzo per evitare un collegamento molti a molti, quando provo a fare riferimento al modello Role dell'utente, ad esempio:
var test = _repository.Users.FirstOrDefault().Roles.Count();
{ "Nome non valido colonna 'User_UserId'. \ R \ nInvalid nome di colonna 'User_UserId'. \ R \ nInvalid nome di colonna 'User_UserId'."}
c'è un modo per mappare la tabella insieme usando la tabella di join usando il framework di entità? È meglio aggiungere un nuovo modello di dati di entità ADO.NET e lasciare che lo studio visivo esegua il reverse engineering del database?
trovato un ottimo insieme di post di blog che coprono come manipolare EF qui: http://vincentlauzon.wordpress.com/2011/04/21/entity-framework-4- 1-bypassing-ef-query-mapping-8/nel caso in cui qualcun altro abbia esigenze simili – GrahamJRoy