1

我想我的部署ASP.NET MVC5網站測試以下這個教程: https://docs.microsoft.com/en-us/aspnet/web-forms/overview/deployment/visual-studio-web-deployment/deploying-to-iis無法在Web部署執行代碼首先遷移

在關於「配置部署的應用程序數據庫」的部分點2,我需要檢查一個在我的屏幕上不可用的盒子(執行Code First Migrations)。我的問題如下:我有一個洋蔥體系結構,因此我的包含實體框架上下文的項目位於一個單獨的項目中(並且正在部署asp.net MVC 5項目),這意味着我不能在此項目中使用enable-migrations 。我也改變了我的連接字符串,以適應我的上下文的名稱精簡在這篇文章中:https://stackoverflow.com/a/32866872/4714502。另一方面,我的DbSet與我的實體框架類有不同的名稱,這是否會成爲問題?我這樣做是因爲我的表的語法非常尷尬,並且是一個要求(我不想在我的應用程序中使用這個命名約定)。假設一個表Web_Documents:

DbSet<Web_Documents> WebDoc { get; set; }

至於結構,我有:

  1. 實體(POCO)
  2. 庫(上下文是這裏
  3. 服務
  4. UI(MVC)(這裏部署

依賴從4到1

這裏是我的app.config在庫:

<?xml version="1.0" encoding="utf-8"?> 
<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> 
    <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> 
    <connectionStrings> 
    <add name="PrincipalServerContext" connectionString="Data Source=SMRFG12APP13\SQLEXPRESS;Initial Catalog=PrincipalServerDB;Integrated Security=SSPI" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
</configuration> 

我的數據庫的名字是PrincipalServerDB和上下文PrincipalServerContext 現在我走了想法,真的不知道我還能做什麼?

回答

2

在包含上下文的項目中創建一個App.config文件,並在其中添加您的connectionString。匹配Web.config結構。例如:

<?xml version="1.0" encoding="utf-8"?> 
<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="DefaultConnection" connectionString="Data Source=localhost;Initial Catalog=YourDb Security=sspi;Pooling=false;" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="mssqllocaldb" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

這組上下文項目作爲StartUp Project後,PMC將其設置爲Default project和這個運行更新,數據庫後。現在它會更新。

+0

我已經有app.config,它應該是完全相同的Web.config?做了這些步驟,但它不起作用。運行Update-database,我看不到要在'PMC'中運行的遷移。我將添加我的app.config,但Web.config更長 –

+0

@FlexabustBergson在''之後添加''。 PMC中標記爲啓動項目和默認項目嗎? https://stackoverflow.com/a/26882750/3850405 – Ogglas

+0

是的,我確實標記了兩個 –

相關問題