Scaffolding controller doesn't work with visual studio 2013 update 2

后端 未结 16 2963
别跟我提以往
别跟我提以往 2020-11-27 03:54

PROBLEM:

I have updated to Visual Studio 2013 update 2 and now I cannot scaffold controllers.

The problem is not project specific: when I try to scaffold

相关标签:
16条回答
  • 2020-11-27 04:04

    n my case, I solved the issue with the connection string in the web.config.

    Previuos the issue I has

      <connectionStrings configSource="Configs\ConnectionString.config"/>
    

    and I doesnt know why, but vs cant connect to the database and fail.

    after the change

    <connectionStrings>
        <add name="UIBuilderContext" connectionString="metadata=res:/ ..... " />
      </connectionStrings>
    

    and it works

    0 讨论(0)
  • 2020-11-27 04:05

    I'll explain here a little bit more in English, so anyone can understand. Hope this helps anyone out there This occurs because Visual Studio fails to connect to the database model .

    This happens when you change the name and/or the path in the class that extends DbContext and didn't change it in the Web.config file (at the outermost part of your project: the root).

    Example:

    Imagine you scaffolded the DbContext code:

    a) You right clicked a folder in your project and added a "ADO.NET Entity Data Model", and you named it "Model1"

    You get the following code:

      public class Model1 : DbContext
    {
        // Your context has been configured to use a 'Model1' connection string from your application's 
        // configuration file (App.config or Web.config). By default, this connection string targets the 
        // 'Skelleton.Models.Model1' database on your LocalDb instance. 
        // 
        // If you wish to target a different database and/or database provider, modify the 'Model1' 
        // connection string in the application configuration file.
        public Model1()
            : base("name=Model1")
        {
        }
    
        // Add a DbSet for each entity type that you want to include in your model. For more information 
        // on configuring and using a Code First model, see http://go.microsoft.com/fwlink/?LinkId=390109.
    
        // public virtual DbSet<MyEntity> MyEntities { get; set; }
    }
    

    enter image description here

    b) Now, you have decided that the name you've just written is plain bad, so you change it to AppContext

    Your code now looks like this:

      public class AppContext : DbContext
    {
        // Your context has been configured to use a 'AppContext' connection string from your application's 
        // configuration file (App.config or Web.config). By default, this connection string targets the 
        // 'Skelleton.Models.AppContext' database on your LocalDb instance. 
        // 
        // If you wish to target a different database and/or database provider, modify the 'AppContext' 
        // connection string in the application configuration file.
        public AppContext()
            : base("name=AppContext")
        {
        }
    
        // Add a DbSet for each entity type that you want to include in your model. For more information 
        // on configuring and using a Code First model, see http://go.microsoft.com/fwlink/?LinkId=390109.
    
        // public virtual DbSet<MyEntity> MyEntities { get; set; }
    }
    

    enter image description here

    Then, you try to Scaffold the CRUD (Create, Read, Update, Delete) operations with views and it fails!

    enter image description here

    Why is that?

    Well, if we go to the web.config file, we can see the following string:

     <add name="Model1" connectionString="data source=(LocalDb)\v11.0;initial catalog=Skelleton.Models.Model1;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
    

    (This line is usually below <add name="DefaultConnection" )

    enter image description here And there is where the problem lies. You need to change Model1 for the name you've given out!

    In this case, it should say "AppContext" instead of "Model1"

    And where it says:

    initial catalog=Skelleton.Models.Model1;
    

    Verify that:

    1. It's the name of the .cs file that has the class

    2. The namespace (or the series of names (dot-separated) that comes before the name of your class) is the correct one. It's important to notice that you do not append to the end the ".cs" extension; just the name of your file.

    It should look like this: enter image description here

    Because I changed the name of the class, both internally and externally (inside it and it's file name), and did not change its location, I just rename it to AppContext

    After this has been done. You can scaffold normally ;)

    Hope this helps!

    0 讨论(0)
  • 2020-11-27 04:05

    I'm running VS 2015RC the last one before final cut. Not to discount any of the solutions here. My solution was under nugget package manager and updated my Microsoft.Aspnet.Mvc 5.2.3 package and that fix my issue. I hope that helps anyone using VS 2015.

    0 讨论(0)
  • 2020-11-27 04:15

    i used Initializer and when remove/comment Initializer from myDbContext constructer , scaffolding work fine

    public myDbContext () : base("name=DefaultConnection")
        {
    
            //Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DastanakDbContext>());
            //Database.Initialize(true);
        }
    
    0 讨论(0)
  • 2020-11-27 04:15

    I have been having this same problem in update 4. I found that the problem came from the <configSections></configSections> not having a section name defined. The fix I put in between the tags is as follows and all the errors were fixed:

    <section name="entityFramework" 
             type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, 
                   EntityFramework, Version=6.0.0.0, Culture=neutral, 
                   PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    

    Build the project and everything should work. Cheers!

    0 讨论(0)
  • 2020-11-27 04:16

    I'm on VS 2013 Update 4 and have exactly same issue. It works for me when moving connection string from external file into web.config. So I guess you could try to make sure not using configureSource attribute for connectionString when scaffolding.

    My web.config before and after the change Before:

    <connectionStrings configureSource="connectionStrings.config/>
    

    After:

    <configuration>
      <configSections>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
      </configSections>
      <log4net configSource="log4net.config" />
      <connectionStrings>
        <clear/>
        <add name="DefaultConnection" connectionString="Data Source=.;Initial Catalog=YourDb;Integrated Security=False;User ID=sa;Password=YourPassword!#;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
      </connectionStrings>
    
    0 讨论(0)
提交回复
热议问题