2011-08-23 14 views
5

Tengo una tabla compuesta llamada ImporterState, que está vinculada a una tabla llamada Importer and State. El error ocurre aquí context.Importers.Include(q => q.States). ¿Por qué está pasando esto?Código Entity Framework Primer error de nombre de objeto inválido

{ "nombre de objeto no válido '' ImporterStates."}

[Table("HeadlineWebsiteImport", Schema = "GrassrootsHoops")] 
     public class Importer 
     { 
      public int Id { get; set; } 
      public string Name { get; set; } 
      public string RssUrl { get; set; } 
      public string Type { get; set; } 
      public string Keywords { get; set; } 
      public bool Active { get; set; } 
      public DateTime DateModified { get; set; } 
      public DateTime DateCreated { get; set; } 

      public int WebsiteId { get; set; } 

      public HeadlineWebsite Website { get; set; } 

      [InverseProperty("Importers")] 
      public ICollection<State> States { get; set; } 
     } 

[Table("State", Schema = "GrassrootsHoops")] 
    public class State 
    { 
     [Key] 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string Abbr { get; set; } 

     [InverseProperty("States")] 
     public ICollection<Headline> Headlines { get; set; } 

     [InverseProperty("States")] 
     public ICollection<Importer> Importers { get; set; } 
    } 
+0

EF tal vez refiriéndose a la tabla de unión '' ImporterStates' en el esquema dbo'. Compruebe [esta respuesta] (http://stackoverflow.com/questions/6028375/entity-framework-code-first-many-to-many-setup-for-existing-tables/6028660#6028660) – Eranga

+0

Estoy queriendo hacer todos los atributos en lugar de ese método. Pero sí, está haciendo algo con mi tabla de unión, pero no estoy haciendo referencia a ella en ningún lugar de mi código. –

+0

configuración basada en atributos es muy limitada – Eranga

Respuesta

8

La muchos a muchos no es posible utilizando sólo atributos.

trate de usar algo como:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 

     modelBuilder.Entity<Importer>() 
      .HasMany(i => i.States) 
      .WithMany(s => s.Importers) 
      .Map(m => 
       { 
        m.MapLeftKey("ImporterId"); 
        m.MapRightKey("StateId"); 
        m.ToTable("ImporterState"); 
       }); 
    } 
+0

Me es muy útil. Gracias. – algreat

+0

Perfecto, llegué aquí porque EF6 manejaba automáticamente las relaciones de Muchos a Muchos en una base de código que heredé. Así que un día se fue y comenzó a quejarse sobre una mesa que eso no existía. Mirando de cerca a la mesa, tiene el nombre de la mesa equivocada, como de ida y vuelta y de adelante hacia atrás. La solución fue especificar explícitamente la relación como se respondió anteriormente. – IbrarMumtaz

Cuestiones relacionadas