【问题标题】:Add Controller Model Classes not shown添加未显示的控制器模型类
【发布时间】:2012-04-03 05:58:42
【问题描述】:

我设法创建了一个 Model First DBContext 模型(之前它是一个普通的 ObjectContext 派生模型)。

奇怪的是,现在我的 VS 没有在“添加控制器”的模型选择列表中显示我的任何类。这里或多或少地显示了所有外部的东西——除了我自己的东西。是的 - 我编译了代码,代码编译没有错误,并多次重新启动 VS。不知道到底发生了什么。

在数据上下文类选择器中相同。

手动设置类不起作用。 Add 总是会抱怨我必须从列表中选择。

VS从哪里获取填充列表的数据?

框架:MVC4、VS2010、EF4.3.1

【问题讨论】:

  • 显而易见的问题:缺少对包含您的 EF 模型的程序集的引用?
  • EF 模型与控制器类在同一个项目中。奇怪的是,我的项目中没有显示任何课程 - 只有外部课程。
  • 构建/调试项目,修复我的。

标签: asp.net-mvc visual-studio-2010 entity-framework-4 scaffolding


【解决方案1】:

当您有一个项目引用另一个项目时,可能会出现此问题。 这称为传递项目引用,并以多种方式表现出来,其中之一就是 this。 在某些情况下,您需要直接引用项目而不是通过传递来解决此问题。

例如:项目 A、项目 B、项目 C

项目 B 有对 C 的引用,所以在 repos/b/bin/debug 你有 b.dll 和 c.dll 项目 A 需要两者,因此您将引用指向 b/bin/debug 文件夹中的 B.dll 和 C.dll。如果这样做,您将看不到 c.dll 中的任何模型,但您可以看到 b.dll 模型。

修复/解决方法:直接参考 repos/b/bin/debug/b.dll 和 repos/c/bin/debug/c.dll

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,尽管我确保包含

    using ProjectName.Models; 
    

    在我的控制器文件的顶部。建造/重建对我不起作用。也没有关闭 Visual Studio 的所有实例并重新打开项目。

    我认为问题可能在于我们使用的是 TFS(Microsoft 的 Team Foundation Server)。我遇到了问题,因为我最初创建了模型,然后在视图文件夹中创建了我的控制器,然后我将该控制器(文件)移动到了控制器文件夹。

    我的解决方案是创建我的模型,将控制器代码复制到其他地方,删除控制器,重建/构建解决方案。然后我创建了一个新的控制器,将正确的代码复制回来,嘿,它识别了模型类。

    【讨论】:

      【解决方案3】:

      我在一个特定型号上遇到了同样的问题。我将 .Net Core 2.x 与 EF Core 一起使用。 原来是因为它继承了一个类,而该类又继承了 Microsoft.AspNetCore.Identity.IdentityUser。 EF Core 不会让我从该模型中搭建脚手架。我从基类中删除了 IdentityUser 的继承,模型出现在 EF new Controller 的下拉列表中。

      【讨论】:

        【解决方案4】:

        建造/重建对我不起作用。我不得不关闭并重新打开解决方案,然后类终于出现了。

        【讨论】:

          【解决方案5】:

          我遇到了同样的问题,检查包(asp.net mvc,& EF) 兼容性,升级所有nuget包。清理并重建项目。这对我有用。

          http://forums.asp.net/t/1791616.aspx?Can+t+create+new+controller+No+model+classes+are+available+

          【讨论】:

            【解决方案6】:

            遇到了同样的问题。我修好了。

            • 在另一个类库项目中分离 EF。
            • 在主 Web 项目中添加引用。
            • 在 Web 项目配置文件中添加连接字符串。

            【讨论】:

              【解决方案7】:

              “添加控制器”模型类未显示用于脚手架

              使用的环境:使用 C# Visual Studio 2013 的 ASP.NET MVC5

              解决方案 1:如果解决方案名称与项目名称相同,则只需清理解决方案,构建解决方案。它会起作用的。

              解决方案 2:如果解决方案名称与项目名称不同,请检查以下步骤:

              (i) 检查您的模型类命名空间为

              namespace SolutionName.ProjectName.Models
              { ...}
              

              假设解决方案名称是“WGT”,项目名称是“MS”,那么模型类说用户应该是

              namespace WGT.MS.Models
              { public class User{...}}
              

              (ii) 之后,清除溶液。

              (iii) 构建解决方案

              它肯定会奏效。花了很多时间后找到了这个解决方案。这是一个切实可行的解决方案。

              【讨论】:

              • 你没有解释为什么这些解决方案会以任何方式起作用。
              • 我不知道为什么,但是清理解决方案对我有用
              【解决方案8】:

              我刚刚在一个正在运行的项目中遇到了这个问题。 EF 或 MVC 没有更新,它刚刚开始抛出“没有模型类......”消息。我备份了我的项目,从我的 HD 中删除了它,并从源代码控制中获得了最新版本,在这种情况下为 SVN。我重建了这个项目,现在它又可以工作了,就像变魔术一样。

              VS 2012 英孚 5.0 .NET 4.5 MVC 4.0

              【讨论】:

                【解决方案9】:

                在一个单独的项目中使用 EF 模型时遇到了同样的问题。

                Rebuild all 什么也没做,只是简单地重新加载到 Visual Studio 的新实例中修复它。

                【讨论】:

                  【解决方案10】:

                  可能相关:Add View Model class dropdown not showing my class

                  在添加控制器时,我一直在寻找解决方案,但在到达此之前到达了提到的帖子。删除 AssemblyInfo.cs 并设置项目的属性对我有用(对于 VS2010)。

                  【讨论】:

                    【解决方案11】:

                    遇到了同样的问题。发现仅仅Building项目并没有解决缺少Model类的问题。然而,重建项目,马上就解决了。

                    【讨论】:

                    • 这对我有用。似乎经常需要构建来刷新这些类型的对话框列表。
                    【解决方案12】:

                    它起作用的原因是,通过将它放在另一个项目中,你“构建”了它,然后它就出现了。如果你已经构建了你的第一个项目,然后尝试添加一个控制器 bam,它就会在那里。

                    【讨论】:

                    • 我在同一个程序集中使用它,它不见了。
                    【解决方案13】:

                    最后我设法让脚手架再次工作。 我从主项目中重构了我的 model.edmx。模板内容现在将在这个新模型项目中生成模型类。 将模型项目添加到主项目后,类再次出现在控制器模型选择框中。 奇怪的是,它似乎可以在没有分离的全新设置解决方案中工作......

                    【讨论】:

                      【解决方案14】:

                      创建一个新的 MVC 互联网站点。添加现有(您的模型类) - 验证它是否有效,然后开始区分这两个项目。

                      【讨论】:

                      • 试过了。模型类可以在新项目的选择列表中找到。不幸的是,我无法检测到任何其他明显的差异。一种选择是将 EF4.3 降级为 EF4.1,因为默认使用 4.1。在我的主要项目上,我通过 nuget 对其进行了更新。
                      • 在 EF 库中似乎不是问题。也许它与模型类本身的生成有关,因为它们现在是通过模板(model.tt)构建的。另一方面 - 它在一个普通的 SPA 项目上工作 - 很奇怪。
                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2016-12-12
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多