El método no estático requiere un objetivo. Entity Framework 5 Code First


Recibo el error "El método no estático requiere un objetivo."cuando corro la siguiente consulta:

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

Mis entidades se definen así:

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

Y mi contexto está configurado así;

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

¿Qué he hecho mal?

Author: ilivewithian, 2012-11-03

1 answers

El problema se reduce a la consulta. Mi pregunta original tenía esta pregunta:

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

Que no era del todo exacto, de hecho había eliminado el error en un intento de hacer mi pregunta sucintamente. La consulta fue en realidad:

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

Cuando el método GetBusiness devolvió null el error fue lanzado. Simplemente asegurarse de que no paso un objeto null en la expresión hizo que el error se detuviera.

 103
Author: ilivewithian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-17 07:52:06