2012-11-03 4 views
45

Ich bekomme den Fehler "Nicht-statische Methode erfordert ein Ziel." wenn ich die folgende Abfrage ausführen:Nicht-statische Methode erfordert ein Ziel. Entity Framework 5 Code First

var allPartners = DbContext.User 
          .Include(u => u.Businesses) 
          .Where(u => u.Businesses.Any(x => x.Id == currentBusinessId)) 
          .ToList(); 

Meine entites sind definiert wie folgt aus:

public class User : Entity 
{ 
    public virtual List<Business> Businesses { get; set; } 
} 

public class Business : Entity 
{ 
    public virtual List<User> Users { get; set; } 
} 

public class Entity 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public Guid Id { get; set; } 
} 

Und mein Kontext ist wie folgt konfiguriert ist;

public class Context : DbContext, IDatabaseSession 
{ 
    public DbSet<Business> Business { get; set; } 
    public DbSet<User> User { get; set; } 

    public Context() 
     : base("DefaultConnection") 
    { 

    } 

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

     modelBuilder.Conventions.Remove 
      <System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>(); 

     Database.SetInitializer(new MigrateDatabaseToLatestVersion<Context, Configuration>()); 

     modelBuilder.Entity<User>() 
      .HasMany(u => u.Businesses) 
      .WithMany(b => b.Users); 
    } 
} 

Was habe ich falsch gemacht?

+0

Können Sie den Typ der Ausnahme, mögliche innere Ausnahmen und Call-Stack anzeigen? – Slauma

+1

Es scheint nicht, dass das Problem in dem Code ist, den Sie zeigten. – Pawel

Antwort

98

Das Problem kam auf die Abfrage. Meine ursprüngliche Frage hatte diese Anfrage:

var allPartners = DbContext.User 
         .Include(u => u.Businesses) 
         .Where(u => u.Businesses.Any(x => x.Id == currentBusinessId)) 
         .ToList(); 

Was nicht ganz richtig war, habe ich in der Tat, den Fehler in einem Versuch, entfernt hatte meine Frage kurz und bündig zu fragen. Die Abfrage war eigentlich:

var currentBusiness = GetBusiness(); 
var allPartners = DbContext.User 
         .Include(u => u.Businesses) 
         .Where(u => u.Businesses.Any(x => x.Id == currentBusiness.Id)) 
         .ToList(); 

Wenn die GetBusiness Methode null der Fehler ausgelöst wurde zurückgegeben. Einfach sicherstellen, dass ich kein null Objekt in den Ausdruck überlasse, hat der Fehler gestoppt.

+0

Das gleiche gilt für mich, danke für den "Hinweis" – Raffaeu

+0

danke, das ist genau das, was mir passiert. Ich hätte meinen Schwanz stundenlang darauf gejagt. –