ASP.NET:模型的自动生成的.Designer.cs文件中的错误

时间:2012-11-12 19:38:20

标签: asp.net

我是ASP.NET新手并且遇到教程问题。

我在VS2012 Express for Web中创建了一个新的MVC4项目。 我添加了一个带有1个表“Persons”的SQL数据库,并用一些随机的testdata填充它:

Id        int (primary key, is identity=true)
name      varchar(50)
birthdate date 


adam  01.01.2001
berta 02.02.2002

作为模型,我使用了ADO.NET实体数据模型,将其命名为“PersonsModel.edmx” 并使用Personsdatabase。

要查看PersonsModel.Designer.cs文件,我将“Codegeneration Status”激活为“Standard”。刷新并单击PersonsModel.Designer.cs文件。 但是在这个文件中我有错误...所以我想在我的控制器中使用这样的东西:

HomeController.cs:

PersonsEntities1 db = new PersonsEntities();

db.person... 

但它不起作用,我认为(?)是因为.Designer.cs文件中的错误。

PersonsModel.Designer.cs:例如:

public PersonsEntities1() : base("name=PersonsEntities1", "PersonsEntities1")
{
        this.ContextOptions.LazyLoadingEnabled = true;
        OnContextCreated();
}

基地的错误:...行 在ContextOptions中。 不幸的是我没有英语VS,但它说的是:

  

最重要的是重载的System.Data.Entity.DbContext(string,System.Data.Entity.Infrastructure.DbCompiledModel)-Method有一些无效的参数

     

没有找到“ContextOptions”的定义,没有方法“ContextOptions”接受“MvcApplication7.Models.PersonsEntities1”作为第一个参数。

我有点困惑,因为我在教程解释中这样做了。

2 个答案:

答案 0 :(得分:1)

我认为这段代码有误:

base("name=PersonsEntities1", "PersonsEntities1")

没有构造函数需要两个字符串。你的第二个参数应该是DbCompiledModel类型。 (见here。)

现在,我不知道为什么你的设计师会生成无法编译的代码,所以我想知道你是否安装了错误版本的Entity Framework。

答案 1 :(得分:0)

显然问题是VS2012。这一切都适用于VS2010。

我已经从asp.net/mvc再次下载了安装程序并添加了Visual Web Developer 2010 Express。在安装VS2010和所有依赖项后,我再次尝试了该教程,现在一切正常。 .Designer.cs文件中没有错误的代码:)。

非常感谢Ann L.的支持。您的提示(安装了错误版本的Entity Framework)提示我尝试另一个VS版本。

另外我要说:我也试过VS2012旗舰版(完整的DVD版),但它没有用。