Entity framework 如何在mvc4中区分连接的调试和发布等
所以我是一个全新的MVC4,很多模式对我来说都是新的 然而,我好奇的是关于发布/调试模式的最佳实践。 对于我来说,live和debug模式之间有很多不同之处,我希望它们都是自动的,所以我不需要更改任何内容来发布 例如,我在我的repo(域项目)中就这样做了 公共类EFAccountRepository:IAccountRepository { 私有efdbcontextu contextEntity framework 如何在mvc4中区分连接的调试和发布等,entity-framework,deployment,release,release-management,profiles,Entity Framework,Deployment,Release,Release Management,Profiles,所以我是一个全新的MVC4,很多模式对我来说都是新的 然而,我好奇的是关于发布/调试模式的最佳实践。 对于我来说,live和debug模式之间有很多不同之处,我希望它们都是自动的,所以我不需要更改任何内容来发布 例如,我在我的repo(域项目)中就这样做了 公共类EFAccountRepository:IAccountRepository { 私有efdbcontextu context public EFAccountRepository() { #if DEBUG
public EFAccountRepository()
{
#if DEBUG
_context = new EFDbContext("name=Debug");
#else
_context = new EFDbContext("name=Live");
#endif
}
在我的DI(webui)中也是这样
或者干脆就拥有它会更聪明吗
EFDbContext efcontext = new EFDbContext("name=MyApp");
然后用web.config转换MyApp的含义
自动调试/发布发布的任何其他技巧都受到热烈欢迎。
< P>使用Web.CONFIG转换 < P>我强烈建议不要硬编码您的连接字符串到您的代码中。请考虑将代码指向Web.CONFIG转换。您可以在那里添加连接字符串,并根据代码的版本可以应用r转换,因此您只需在应用程序中使用以下代码一次即可覆盖所有环境ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString
在调试版本中,您可以使用类似
<configuration xmlns:xdt="...">
<connectionStrings>
<add name="MyConnectionString" connectionString="debugstring"
providerName="debugprovider" />
</connectionStrings>
</configuration>
如果您有多个连接字符串,则所选答案将不起作用。在发布配置中,为所有连接字符串添加以下标记
xdt:Transform=“SetAttributes”xdt:Locator=“匹配(名称)”
这是我的Web配置文件中的内容
在Web.Debug.Config中
<add name="MyConnectionString"
connectionString="Data Source=dev;Initial Catalog=DevDB;Integrated Security=True;
providerName="System.Data.SqlClient"/>
我不确定我是否遵循了。如果在连接字符串级别上有替换转换标记,那么它将完全替换有问题的单个连接字符串。但如果将其移动到该级别,则会清除所有连接字符串。
<configuration xmlns:xdt="...">
<connectionStrings>
<add name="MyConnectionString" connectionString="newstring"
providerName="newprovider"
xdt:Transform="Replace" />
</connectionStrings>
</configuration>
<add name="MyConnectionString"
connectionString="Data Source=dev;Initial Catalog=DevDB;Integrated Security=True;
providerName="System.Data.SqlClient"/>
<add name="MyConnectionString"
connectionString="Data Source=LIVESERVER;Initial Catalog=DB98;Integrated Security=True;
providerName="System.Data.SqlClient"
xdt:Transform="SetAttributes"
xdt:Locator="Match(name)"/>