非静态方法需要一个目标。 entity framework5 Code First
我收到错误“非静态方法需要目标”。 当我运行以下查询:
var allPartners = DbContext.User .Include(u => u.Businesses) .Where(u => u.Businesses.Any(x => x.Id == currentBusinessId)) .ToList();
我的实体是这样定义的:
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; } }
而我的上下文是这样configuration的;
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); } }
我做错了什么?
问题归结为查询。 我原来的问题有这个查询:
var allPartners = DbContext.User .Include(u => u.Businesses) .Where(u => u.Businesses.Any(x => x.Id == currentBusinessId)) .ToList();
这不是很准确,事实上我已经删除了这个错误,试图简洁地问我的问题。 查询实际上是:
var currentBusiness = GetBusiness(); var allPartners = DbContext.User .Include(u => u.Businesses) .Where(u => u.Businesses.Any(x => x.Id == currentBusiness.Id)) .ToList();
当GetBusiness
方法返回null
,抛出错误。 简单地确保我不传递一个null
对象到expression式使得错误停止。