ADO.NET自我跟踪实体生成器编译错误

时间:2011-05-12 18:05:57

标签: c# entity-framework asp.net-mvc-3 ado.net

我无法弄清楚为什么我突然得到这些编译错误。让我们完成我采取的步骤:

1)我使用Razor View引擎创建了一个新的MVC3 ASP.NET项目(C#)

2)在我的Models文件夹中,我添加了一个ADO.NET实体数据模型,将其连接到我的数据库,并将其命名为Database.edmx

3)打开Database.edmx并选择Add code generation item。然后我添加一个Selft跟踪实体生成器并将其命名为Model.tt

一切都是自动生成的。然而,当我点击构建时,我得到以下编译错误:

Error   1   Cannot implicitly convert type 'System.Type' to 'MyOwnProject.Models.Type'  
Error   2   'MyOwnProject.Models.Type' does not contain a definition for 'IsValueType' and no extension method 'IsValueType' accepting a first argument of type 'MyOwnProject.Models.Type' could be found (are you missing a using directive or an assembly reference?) 
Error   3   'MyOwnProject.Models.Type' does not contain a definition for 'IsGenericType' and no extension method 'IsGenericType' accepting a first argument of type 'MyOwnProject.Models.Type' could be found (are you missing a using directive or an assembly reference?) 
Error   4   'MyOwnProject.Models.Type' does not contain a definition for 'GetGenericTypeDefinition' and no extension method 'GetGenericTypeDefinition' accepting a first argument of type 'MyOwnProject.Models.Type' could be found (are you missing a using directive or an assembly reference?)   
Error   5   Cannot implicitly convert type 'System.Type' to 'MyOwnProject.Models.Type'  
Error   6   'MyOwnProject.Models.Type' does not contain a definition for 'FullName' and no extension method 'FullName' accepting a first argument of type 'MyOwnProject.Models.Type' could be found (are you missing a using directive or an assembly reference?)   
Error   7   'MyOwnProject.Models.Type' does not contain a definition for 'FullName' and no extension method 'FullName' accepting a first argument of type 'MyOwnProject.Models.Type' could be found (are you missing a using directive or an assembly reference?)   

对我来说,这完全没有意义。我用这种方式用数据库创建了新项目十几次,现在,突然间,我得到了这些编译错误。我对数据库,edmx或模型的命名并没有什么不同。数据库位于App_Data文件夹中或硬盘驱动器上的外部位置也没有区别。

有谁知道为什么会失败?感谢。

2 个答案:

答案 0 :(得分:2)

不要将您的实体称为“类型”。 .NET中有一个非常非常重要的类型,称为Type。你只会因为这个名字而感到痛苦。选择一个与内置基本类型名称不同的名称。

答案 1 :(得分:2)

看起来数据库中有一个表TYPES,它会产生一个实体类Type。该类隐藏了类System.Type。将您实体的名称更改为其他名称,例如TypeEntity