2010-04-29 121 views
0

我用这个:类型或命名空间名称找不到

public class ConstructionRepository 
    { 
     private CRDataContext db = new CRDataContext(); 

     public IQueryable<Material> FindAllMaterials() 
     { 
      //return db.Materials; 
      var materials = from m in db.Materials 
          join Mt in db.MeasurementTypes on m.MeasurementTypeId equals Mt.Id 
          select new Material 
          { 
           Mat_Name = m.Mat_Name, 
           MeasurementTypeId = Mt.Name, 
           Mat_Type = m.Mat_Type }; 
      return materials.AsQueryable(); 
     } 
    } 

它给了我唯一的错误

  1. “CrMVC.Models.Material”不包含'的定义材质ID”, 'MesName', 'MesType'

编辑: 'MatId','MesName','MesType'只是我给出的假名称是错误的..

+1

似乎无法找到MaterialsView。缺少包含或引用?也可能导致错误2。 3 unknown – RvdK 2010-04-29 13:43:08

回答

1

Material类必须具有与您在选择的新Material {...}子句中使用的名称相同的名称的可设置属性,但不能仅将它们设置为。

+0

@Daniel哦我现在明白了 – 2010-04-29 14:15:22

4

我会说修复第一个错误将是一个很好的起点 - 你确定你有在您的项目中引用了包含MaterialsView的程序集,并在代码文件的顶部添加了using指令,以包含MaterialsView的名称空间?

另外两个错误 [见编辑]第一个和第三个错误将消失,一旦你有正确的参考和包括MaterialsView类型。

编辑:作为Tejs points out in his answer,第二个错误肯定是由于这样的事实,你是缺少AsQueryable通话。

+0

@Andrew看看我的编辑... – 2010-04-29 13:51:36

1

1)确保你的'材料视图'类所在的名称空间是在这个代码文件中的引用。如果它被引用,请检查以确保该文件正在构建并且没有任何编译器错误 - 有时它可以掩盖真正的错误。

2)这样的LINQ查询将返回一个IEnumerable实例,而不是IQueryable。当您返回材质时,请调用materials.AsQueryable();

3)我没看到在这个方法中调用ToList(),编译器告诉你这个错误发生在哪里?

+0

+1第二个错误肯定是因为缺少调用'AsQueryable'的好结果! – 2010-04-29 13:49:03

+0

@Tejs看看我的编辑 – 2010-04-29 13:53:50

0

类型或命名空间名称MaterialsView找不到(是否缺少using指令或程序集引用?)

(是的,这是一个答案)。

+0

你看不到这一点,但我现在很难滚动我的眼睛... – Tejs 2010-04-29 13:49:23

相关问题