当我尝试添加“MOVIES”控制器时,它出错:“ 生成'MvcMovieSF.Models.MovieDBContext时出错。尝试重建项目 。“
我重建了项目,但仍然出错。提前谢谢!
namespace MvcMovieSF.Models
{
public class Movie
{
public int ID { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; }
}
public class MovieDBContext : DbContext
{
public DbSet Movies { get; set; }
}
}
JUST NOTICED:我不是坐在自己的电脑上,而是注意到SQLExpress服务没有启动;我没有在此计算机上获得启动服务的权限。这可能是原因吗?
答案 0 :(得分:8)
添加控制器也会修改上下文类。如果已实现partial class
将一些业务规则添加到上下文中,则框架无法成功编辑您的分部类以找到其自身插入的正确点。
(至少,这对我有用,10分钟前......)
修改强>
Context类可能部分实现如下:
public partial class MyDatabaseEntities : DbContext
{
public override int SaveChanges() { ... }
#region Some Business Rules Here
...
#endregion
}
在这里,如果您尝试添加新控制器,则会因错误而失败:“生成'MyDatabaseEntities'时出错。尝试重建项目。” 而且重建根本无济于事......
我的解决方案是:
删除这些业务规则,当然,请将它们保存在安全的地方,因为之后您可能会需要它们:
public partial class MyDatabaseEntities : DbContext
{
public override int SaveChanges() { ... }
}
创建您的控制器。你这次应该成功。
从上下文类中删除框架添加的代码:
public partial class MyDatabaseEntities : DbContext
{
public override int SaveChanges() { ... }
public DbSet<MyModelClass> MyModelClass { get; set; } // remove this line
}
重新制定业务规则。
希望这会有所帮助。
答案 1 :(得分:0)
我在ASP.NET MVC 4中添加新控制器时遇到了同样的问题,我通过将Database.SetInitializer(new SomeDataContextInitializer());
从DBContext的构造函数移动到Global.asax.cs中的Application_Start方法来解决了这个问题。希望它有所帮助。
答案 2 :(得分:0)
答案 3 :(得分:0)
我的项目名称是MVC,我有这个类
public class download
{
public int download_id { get; set; }
public int download_category_id { get; set; }
public string download_name { get; set; }
public int download_size { get; set; }
public string download_description { get; set; }
public string download_path { get; set; }
public download_category download_category { get; set; }
}
public class download_category
{
public int download_category_id { get; set; }
public string download_category_name { get; set; }
}
public class DownloadDbContext : DbContext
{
public DbSet<download> downloads { get; set; }
public DbSet<download_category> download_categorys { get; set; }
}
我在脚手架时遇到了类似的错误(生成尝试重建项目时出错)。 我正在使用visual studio 2012版本11.0.50727.1 RTMREL并将实体引用为... \ EntityFramework.5.0.0 \ lib \ net45 \ EntityFramework.dll
首先我将类划分为三个类(三个单独的* .cs文件),并在download和download_category类中使用DataAnnotations,使用[key]作为id列并解决问题。
我的课程如下所示:在Models文件夹中:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MVC.Models;
using System.ComponentModel.DataAnnotations;
namespace MVC.Models
{
public class Download
{
[Key]
public int download_id { get; set; }
public int download_category_id { get; set; }
public string download_name { get; set; }
public int download_size { get; set; }
public string download_description { get; set; }
public string download_path { get; set; }
public Download_category download_category { get; set; }
}
}
和
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace MVC.Models
{
public class Download_category
{
[Key]
public int download_category_id { get; set; }
public string download_category_name { get; set; }
}
}
和
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace MVC.Models
{
public class DownloadDbContext:DbContext
{
public DbSet<Download> downloads { get; set; }
public DbSet<Download_category> download_categorys { get; set; }
}
}
答案 4 :(得分:0)
我和苏珊有同样的问题。在我的情况下,在上下文类中指定DbSet(public DbSet<Movie> Movies
)的模型类型修复了问题。
我正在使用VS 2012,我将Entity Framework 5.0软件包添加到解决方案中。