5

Tengo dos entidades con muchos a muchos así:EF 4.1 RC de muchos a muchos en EF CF

class author 
{ 
    public int AuthorID{get;set;} 
    public string Name{get;set;} 
    public virtual ICollection<book> books{get;set;} 
} 
class book 
{ 
    public int BookID{get;set;} 
    public string Name{get;set;} 
public virtual ICollection<author> authors{get;set;} 

} 

y tengo una tabla intermedia llamada Bookauthor define así:

BookAuthor: int 
    int AuthorID 
    int BookID 

Cómo mapear esto usando FluentAPI

Gracias !!

Respuesta

8

Esto era problemático con EDMX pero con EF 4.1 API fluida puede asignar que:

modelBuilder.Entity<book>() 
      .HasMany(b => b.authors) 
      .WithMany(a => a.books) 
      .Map(m => m.MapLeftKey("BookID") 
        .MapRightKey("AuthorID") 
        .ToTable("BookAuthor")); 

Como se puede ver que no mapee la columna BookAuthor. Esa columna es desconocida para EF y debe incrementarse automáticamente.

Obviamente, esto no puede funcionar con un enfoque de primer código, pero solo si usa la API de Fluent contra la base de datos existente.

+0

Gracias! ¡Está funcionando ahora! –

+0

está funcionando? ¿De Verdad? con que condición? 4.1 no se preocupa por OnModelCreating override. Estoy realmente vivo shock. ToTable ("BookAuthor") no crea una tabla llamada por BookAuthor. –

0

No creo que EF le permita tener una identificación por separado en tablas de unión de muchos a muchos.

La alternativa es simplemente mapear BookAuthor como una entidad.

En una nota lateral, NHibernate es compatible con este constructo mediante un idbag

Cuestiones relacionadas