非静态方法需要目标.实体框架5代码优先

ili*_*ian 48 ef-code-first .net-4.5 entity-framework-5

我收到错误"非静态方法需要一个目标." 当我运行以下查询时:

var allPartners = DbContext.User
                           .Include(u => u.Businesses)
                           .Where(u => u.Businesses.Any(x => x.Id == currentBusinessId))
                           .ToList();
Run Code Online (Sandbox Code Playgroud)

我的entites定义如下:

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; }
}
Run Code Online (Sandbox Code Playgroud)

我的上下文配置如下;

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

ili*_*ian 110

问题归结为查询.我原来的问题有这个问题:

var allPartners = DbContext.User
                       .Include(u => u.Businesses)
                       .Where(u => u.Businesses.Any(x => x.Id == currentBusinessId))
                       .ToList();
Run Code Online (Sandbox Code Playgroud)

这不太准确,事实上我已经删除了错误,试图简洁地提出我的问题.查询实际上是:

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

GetBusiness方法返回时null,抛出了错误.只需确保我没有将null对象传递给表达式,就会使错误停止.