2013-08-15 3 views
1

일부 항목은 select 문을 사용한 후 where 문에 속성이없는 이유를 말해 줄 수 있습니까?DataContext는 where 문에서 속성이 누락되었습니다.

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

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

답변

4

db.Select(x => x.Lft)int의 목록을 0으로 반환합니다.조항을 사용하면 속성에 액세스하지 않습니다.

selectwhere을 원하는대로 전환 할 수 있습니다. db이 실제 context이라고 가정합니다.

db.Where(x => x.DepartmentId == id).Select(x => x.Lft) 

좀 이상합니다. 일반적으로 다음과 같아야합니다.

db.context.Departments.Where(x => x.DepartmentId == id).Select(x => x.Lft) 
+0

예, db.DBSET.where가 아닌 db.select –

관련 문제