2012-11-03 12 views
45

"Statik olmayan bir yöntem için hedef gerektirir" hatasını alıyorum.Statik olmayan yöntem bir hedef gerektirir. Varlık Framework 5 Kod İlk

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

Benim entites böyle tanımlar şunlardır: Aşağıdaki sorgu çalıştırdığınızda

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

Ve bağlam böyle yapılandırılmıştır;

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

Neyi yanlış yaptım?

+0

İstisna türü, olası iç özel durumlar ve çağrı yığını gösterebilir misiniz? – Slauma

+1

Sorun, gösterdiğiniz kodda görünmüyor. – Pawel

cevap

98

Sorun, soruna kaynatıldı. Ben aslında özlü sorumu sormak için bir girişim hata çıkarmıştı,

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

oldukça doğru değildi: My orijinal soru bu sorguyu vardı. Sorgu aslında:

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

GetBusiness yöntem hatası atıldı null döndüğünde. Basitçe ifade içine bir null nesnesini iletmemeyi sağlayarak hatayı durdurun.

+0

Benimle aynı, "ipucu" için teşekkürler – Raffaeu

+0

Teşekkür ederim, tam olarak bana ne oluyor. Kuyruğu saatlerce kovalardım. –

İlgili konular