我目前正在使用Windows窗体探索实体框架,同时遵循我遇到的official documentation个代码 这会产生编译时错误:
private void dgvCategories_SelectionChanged(object sender, EventArgs e)
{
if(this.contextDB != null && this.dgvCategories.CurrentRow !=null)
{
var category = this.dgvCategories.CurrentRow.DataBoundItem;
if(category != null)
{
// this.contextDB.Entry(category).Collection(a => a.Products).Load();
this.contextDB.Entry(category).Collection(a => a.Products).Load();
}
}
}
CS1660无法将lambda表达式转换为类型‘INavigationBase’,因为它不是委托类型.
错误在a=>;a产品中.
编辑:这是我的数据库上下文类
internal class ContextDB : DbContext
{
public DbSet<Product> Products { get; set; }
public DbSet<ProductCategory> categories { get; set; }
//public DbSet<PurchaseOrder> purchases { get; set; }
// public DbSet<cate>
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Data Source=products.db");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<ProductCategory>().HasData(
new ProductCategory { CategoryId = 1, Name = "Cheese" },
new ProductCategory { CategoryId = 2, Name = "Meat" },
new ProductCategory { CategoryId = 3, Name = "Fish" },
new ProductCategory { CategoryId = 4, Name = "Bread" }
);
modelBuilder.Entity<Product>().HasData(
new Product { ProductId = 1, CategoryId = 1, Name = "Cheddar", Price = 50 },
new Product { ProductId = 10, CategoryId = 1, Name = "Parmesan" },
new Product { ProductId = 12, CategoryId = 2, Name = "Beef" },
new Product { ProductId = 13, CategoryId = 2, Name = "Chicken" },
new Product { ProductId = 17, CategoryId = 2, Name = "Mutton" },
new Product { ProductId = 21, CategoryId = 3, Name = "Salmon" },
new Product { ProductId = 22, CategoryId = 3, Name = "Tuna" }
);
}
}