2016-08-09 164 views
-1

Ich entwickle eine ASP.NET MVC-Anwendung in VS 2015 Professional auf einem Windows Server 2008 R2-System und die Anwendung stellt eine Verbindung zu einer Datenbank her, und jetzt möchte ich Verschieben des Projekts auf einen anderen Computer ohne SQL Server (Windows 10 System) Auf dem Zielcomputer verwende ich VS2015 Community Edition, und ich konnte das Projekt darin laden. Beim Ausführen des Programms erhalte ich jedoch Fehler, die besagen, dass die Tabellen nicht existieren, obwohl ich die Datenbank mit dem gleichen Namen wie im ursprünglichen Computer unter Verwendung von Visual Studio Localdb erstellt habe. Ich dachte, das Entity Framework und Identity Framework (welches das Benutzerverwaltungssystem der App verwendet) würden die Tabellen automatisch generieren, und es gibt eine Seed-Methode, um einen Admin-Benutzer zu erstellen.Datenbankprobleme beim Verschieben eines Visual Studio 2015-Projekts auf einen anderen Computer

Web.config

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=301880 
    --> 
<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" /> 
    </configSections> 

    <connectionStrings> 
    <add name="IdentityDb" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=IdentityDb;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False; MultipleActiveResultSets=True" /> 
    </connectionStrings> 

    <appSettings> 
    <add key="webpages:Version" value="3.0.0.0" /> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    <add key="owin:AppStartup" value="IdentityDevelopment.App_Start.IdentityConfig" /> 
    </appSettings> 
    <system.web> 
    <compilation debug="true" targetFramework="4.5.2" /> 
    <httpRuntime targetFramework="4.5.2" /> 
    </system.web> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <system.codedom> 
    <compilers> 
     <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" /> 
     <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" /> 
    </compilers> 
    </system.codedom> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 
</configuration> 

IdentityConfig.cs

using Microsoft.AspNet.Identity; 
using Microsoft.Owin; 
using Microsoft.Owin.Security.Cookies; 
using Owin; 
using IdentityDevelopment.Infrastructure; 

namespace IdentityDevelopment.App_Start 
{ 
    public class IdentityConfig 
    { 
     public void Configuration(IAppBuilder app) 
     { 

      app.CreatePerOwinContext<AppIdentityDbContext>(AppIdentityDbContext.Create); 
      app.CreatePerOwinContext<AppUserManager>(AppUserManager.Create); 
      app.CreatePerOwinContext<AppRoleManager>(AppRoleManager.Create); 

      app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
       LoginPath = new PathString("/Account/Login"), 
      }); 
     } 
    } 
} 
+0

Hat Ihr Projekt eine Web.Config-Datei? Kannst du es posten? –

+0

@EricS Ja, tut es, habe es gerade gepostet. Dies ist vom SQL Server 2008-Computer. – ITWorker

Antwort

1

Sie haben Entity Framework Migration Tool verwenden Datenbank auf verschiedenen System zu migrieren als EF Aufzeichnungen hält, wo Datenbank erstellt, Beim Ändern des Systems wurde Ihr Systemname geändert, sodass EF sie als neue Datenbank ansieht, da sie nicht wusste, dass Sie auf ein neues System migrieren. Verwenden Sie msdn Hilfe zum Migrieren von Daten

+0

Ich werde das prüfen, danke. – ITWorker

1

Visual Studio kann Tabellen generieren, wenn Sie Entity Framework-Code als ersten Ansatz verwenden (mithilfe von Code-Erstmigrationen).

standardmäßig in Ihrem EF Konfiguration Klasse, AutomaticMigrationsEnabled auf false gesetzt ist, was bedeutet, dass dieser Prozess nicht automatisch geschieht, wenn Sie es sagen.

Sie können in Visual Studio, um den Package Manager-Konsole öffnen und den folgenden Befehl eingeben:

Update-Database 

Diese gelten automatisch alle Ihre Migrationen und Samen Methoden, wenn Sie Ihr Info-Datenbank für die Verbindung korrekt ist. Wenn Sie mehrere Projekte haben, stellen Sie sicher, dass Sie in der Package Manager-Konsole die entsprechende auswählen. Es wird normalerweise das Projekt sein, das Ihren Datenbankkontext hat.

+0

Ich werde das ausprobieren und posten, was später passiert. Vielen Dank. – ITWorker

+0

Ok. Wenn der angegebene Befehl einen Fehler verursacht, poste ihn bitte, damit wir ihn beheben können. –

+0

Ich habe mir Migrationen angeschaut und es funktionierte, gipfelte mit diesem Befehl. – ITWorker