ASP.Net MVC添加控制器错误

Sus*_*san 4 asp.net-mvc

当我尝试添加"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; }
    }
}
Run Code Online (Sandbox Code Playgroud)

只是注意: 我没有坐在我自己的电脑上,我注意到SQLExpress服务没有启动; 我没有在此计算机上获得启动服务的权限.这可能是原因吗?

Bol*_*der 9

添加控制器还会修改上下文类.如果已实现partial class在上下文中添加一些业务规则,则框架无法成功编辑部分类以查找其自身插入的正确点.

但是,愚蠢的是,删除业务规则可能会有所帮助.创建控制器后,您可以将它们放回原处.

(至少,这对我有用,10分钟前...)

编辑:

Context类可能部分实现如下:

public partial class MyDatabaseEntities : DbContext
{
    public override int SaveChanges() { ... }

    #region Some Business Rules Here 
    ...
    #endregion
}
Run Code Online (Sandbox Code Playgroud)

在这里,如果您尝试添加新控制器,则会因错误而失败:"生成'MyDatabaseEntities'时出错.请尝试重建项目." 重建根本无济于事......

我的解决方案是:

  1. 当然,请删除这些业务规则,将它们保存在安全的地方,因为之后您可能需要它们:

    public partial class MyDatabaseEntities : DbContext
    {
        public override int SaveChanges() { ... }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建您的控制器.你这次应该成功.

  3. 从上下文类中删除框架添加的代码:

    public partial class MyDatabaseEntities : DbContext
    {
        public override int SaveChanges() { ... }
    
        public DbSet<MyModelClass> MyModelClass { get; set; }  // remove this line
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 放回业务规则.

希望这可以帮助.