2012-11-03 17 views
45

Otrzymuję błąd "Metoda niestatyczna wymaga celu". kiedy uruchomić następujące zapytanie:Metoda niestatyczna wymaga celu. Entity Framework 5 Code First

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

Moi udziałów w jednostkach są definiuje takie jak ten:

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; } 
} 

A mój kontekst jest skonfigurowany w ten sposób;

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); 
    } 
} 

Co zrobiłem źle?

+0

Czy można wyświetlić typ wyjątku, możliwe wewnętrzne wyjątki i stos wywołań? – Slauma

+1

Nie wydaje się, że problem leży w kodzie, który pokazałeś. – Pawel

Odpowiedz

98

Problem sprowadził się do zapytania. Moje oryginalne pytanie miałem to zapytanie:

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

który nie był dość dokładny, miałem w rzeczywistości usunięto błąd, starając się zadać moje pytanie zwięźle. Zapytanie był rzeczywiście:

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

Gdy metoda GetBusiness powrócił null błąd został rzucony. Po prostu upewnienie się, że nie przekazuję obiektu null do wyrażenia spowodowało zatrzymanie błędu.

+0

To samo dotyczy mnie, dzięki za "podpowiedź" – Raffaeu

+0

dziękuję, właśnie to się ze mną dzieje. Godzinami ścigałem się z tym ogonem. –

Powiązane problemy