非静的メソッドにはターゲットが必要です。 Entity Framework 5 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; }
}
そして、私のコンテキストはこのように構成されています。
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
オブジェクトを式に渡さないようにするだけで、エラーが停止しました。