Asp.net mvc DataContext在where语句中缺少属性
有人能告诉我为什么在使用select语句之后,where语句中没有属性吗Asp.net mvc DataContext在where语句中缺少属性,asp.net-mvc,entity-framework,entity-framework-5,Asp.net Mvc,Entity Framework,Entity Framework 5,有人能告诉我为什么在使用select语句之后,where语句中没有属性吗 db.Select(x => x.Lft).Where(x => x.DepartmentId == id); // missing properties in the where clause 你能帮我修改代码来实现它吗?请给我一个例子来说明如何实现它。谢谢 课程: public class Department { public Department() { Produc
db.Select(x => x.Lft).Where(x => x.DepartmentId == id);
// missing properties in the where clause
你能帮我修改代码来实现它吗?请给我一个例子来说明如何实现它。谢谢
课程:
public class Department
{
public Department()
{
Products = new List<Product>();
}
public long DepartmentId { get; set; }
[Required(ErrorMessage="Please enter a name for the departments.")]
[DataType(DataType.Text)]
public string Name { get; set; }
[DataType(DataType.Text)]
[Required(ErrorMessage = "Please enter a valid url for the department.")]
public string Url { get; set; }
public int Lft { get; set; }
public int Rgt { get; set; }
public bool MenuItem { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
公共课部
{
公共部门()
{
产品=新列表();
}
公共长部门ID{get;set;}
[必需(ErrorMessage=“请输入部门名称”。)]
[数据类型(DataType.Text)]
公共字符串名称{get;set;}
[数据类型(DataType.Text)]
[必需(ErrorMessage=“请输入部门的有效url。”)]
公共字符串Url{get;set;}
公共整数Lft{get;set;}
公共int Rgt{get;set;}
公共bool菜单项{get;set;}
公共虚拟ICollection产品{get;set;}
}
我的DataContext类
internal class DepartmentsTypeConfiguration : EntityTypeConfiguration<Department>
{
public DepartmentsTypeConfiguration()
{
Property(department => department.DepartmentId)
.HasColumnName("DepartmentId")
.HasDatabaseGeneratedOption(databaseGeneratedOption: DatabaseGeneratedOption.Identity);
Property(department => department.Name)
.HasColumnName("Name")
.IsRequired();
HasKey(key => key.DepartmentId)
.HasMany(x => x.Products)
.WithRequired(x => x.Department)
.WillCascadeOnDelete(true);
}
}
public class LeapFrogDataContext : DbContext
{
public DbSet<Department> Departments { get; set; }
public DbSet<Product> Products { get; set; }
public DbSet<ProductSpecification> ProductSpecifications {get; set;}
public DbSet<Specification> Specifications { get; set; }
/**/
static LeapFrogDataContext()
//: base("name=LeapFrogDataConnection")
{
//Database.SetInitializer(new LeapFrogInitializer());
//Database.SetInitializer(new DropCreateDatabaseIfModelChanges<LeapFrogDataContext>());
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new DepartmentsTypeConfiguration());
modelBuilder.Configurations.Add(new ProductsTypeConfiguration());
modelBuilder.Configurations.Add(new SpecificationsTypeConfiguration());
modelBuilder.Configurations.Add(new ProductSpecificationsTypeConfiguration());
base.OnModelCreating(modelBuilder);
}
}
内部类部门规范配置:EntityTypeConfiguration
{
公共部门专业配置()
{
属性(department=>department.DepartmentId)
.HasColumnName(“部门ID”)
.HasDatabaseGeneratedOption(databaseGeneratedOption:databaseGeneratedOption.Identity);
属性(department=>department.Name)
.HasColumnName(“名称”)
.IsRequired();
HasKey(key=>key.DepartmentId)
.HasMany(x=>x.Products)
.WithRequired(x=>x.Department)
.WillCascadeOnDelete(真);
}
}
公共类LeapFrogDataContext:DbContext
{
公共数据库集部门{get;set;}
公共数据库集产品{get;set;}
公共数据库集产品规范{get;set;}
公共数据库集规范{get;set;}
/**/
静态LeapFrogDataContext()
//:base(“name=LeapFrogDataConnection”)
{
//SetInitializer(新的LeapFrogInitializer());
//SetInitializer(新的DropCreateDatabaseIfModelChanges());
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(newdepartmentsTypeConfiguration());
modelBuilder.Configurations.Add(newproductsTypeConfiguration());
modelBuilder.Configurations.Add(新规范stypeconfiguration());
添加(新的ProductSpecificationsTypeConfiguration());
基于模型创建(modelBuilder);
}
}
db.Select(x=>x.Lft)
返回int
的列表,因此在where
子句中,您将无法访问任何属性
我想你可以切换选择
和where
来实现你想要的。假设db
是实际的上下文
db.Where(x => x.DepartmentId == id).Select(x => x.Lft)
这有点奇怪。正常情况下应该是这样的
db.context.Departments.Where(x => x.DepartmentId == id).Select(x => x.Lft)
db.Select(x=>x.Lft)
返回int
的列表,因此在where
子句中,您将无法访问任何属性
我想你可以切换选择
和where
来实现你想要的。假设db
是实际的上下文
db.Where(x => x.DepartmentId == id).Select(x => x.Lft)
这有点奇怪。正常情况下应该是这样的
db.context.Departments.Where(x => x.DepartmentId == id).Select(x => x.Lft)