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对象传递给表达式,就会使错误停止.
| 归档时间: |
|
| 查看次数: |
35761 次 |
| 最近记录: |