【问题标题】:create new controller - error running selected code generator创建新控制器 - 运行所选代码生成器时出错
【发布时间】:2014-01-13 14:49:59
【问题描述】:

我正在使用 Visual Studio Express 2013 for Web(特别是版本 12.0.21005.1 REL)。这是我第一个使用 VS2013 的项目,到目前为止我一直在使用 VS2012。

我正在尝试在我的 asp.net MVC 应用程序中创建一个新控制器。我首先使用带有代码的 Entity Framework 5 (.NET 4.5)。我希望 Visual Studio 为我创建模板(你知道,一个控制器具有读取/写入/删除等视图,而不是自己从头开始编写代码)。

但是,每次我尝试创建控制器时,都会收到以下错误消息:

VS 2013 中是否存在某种错误?我不知道这意味着什么,重新启动 VS2013 也无济于事。

这里是血淋淋的细节......实际上这一切都非常简单,因为这是一个到目前为止编写的代码很少的新项目。

我的模特:

namespace ProfessionalSite.Models
{
    public class EntityModels
    {

        public class Student
        {
            public int ID { get; set; }
            public string LastName { get; set; }
            public string FirstMidName { get; set; }

            public virtual ICollection<Enrollment> Enrollments { get; set; }
        }


        public class Enrollment
        {
            public int ID { get; set; }
            public string EnrollmentName { get; set; }
            public string Credits { get; set; }
        }


        // Create the class that inherits from DbContext
        // The name of this class is also used as the connection string in web.config 
        public class EFDbContext : DbContext
        {
            public DbSet<Student> Students { get; set; }
            public DbSet<Enrollment> Enrollments { get; set; }
            } 
    }
}

在我的 web.config 文件中,我有以下内容

<add name="EFDbContext"
         connectionString="Data Source=JONSNA\SQLEXP2012WT;Initial Catalog=ProfessionalSiteDb; Integrated Security=True; MultipleActiveResultSets=True"
         providerName="System.Data.SqlClient"/>

在标签内。

现在是时候创建一个控制器了。我在解决方案资源管理器中右键单击控制器,然后选择添加新控制器。

然后

当我点击添加时,我得到了

我不知道如何摆脱这个错误。我想作为一种解决方法,我可以自己输入代码,但我想知道这是一个错误还是我做错了什么。在 VS2012 中,这只是工作......

如果有任何帮助或指点,我将不胜感激。谢谢。

【问题讨论】:

  • 最好在添加控制器之前重新构建您的项目以避免此错误。我到这里结束是因为有语法错误,我没有重建,只是尝试添加控制器。

标签: asp.net-mvc visual-studio-2013 asp.net-mvc-5 entity-framework-6


【解决方案1】:

你不需要EntityModels 类,见下文:

namespace ProfessionalSite.Models
{
        public class Student
        {
            public int ID { get; set; }
            public string LastName { get; set; }
            public string FirstMidName { get; set; }
            public virtual ICollection<Enrollment> Enrollments { get; set; }
        }

        public class Enrollment
        {
            public int ID { get; set; }
            public string EnrollmentName { get; set; }
            public string Credits { get; set; }
        }

        // Create the class that inherits from DbContext
        // The name of this class is also used as the connection string in web.config 
        public class EFDbContext : DbContext
        {
            public DbSet<Student> Students { get; set; }
            public DbSet<Enrollment> Enrollments { get; set; }
        } 
}

然后当你创建控制器时,只需为 Model 类选择 StudentEnrollment

【讨论】:

  • 你说得对,我觉得自己像个白痴!为什么我的课程被包裹在另一个课程中?!?!我认为这是因为我将代码从一个项目复制/粘贴到另一个项目并且没有费心去实际检查语法。为我服务...谢谢林。
猜你喜欢
  • 2020-08-10
  • 2019-10-15
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 2016-05-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
相关资源
最近更新 更多