我继承了一个针对生产SQL-Server数据库开发的VB.NET应用程序。我现在有一个开发SQL-Server,我想确保所有的开发工作都是针对数据的开发副本完成的。然后将应用程序部署到生产环境,并使其针对生产SQL-Server运行。
我已经为我的应用程序添加了逻辑,因此第一个表单的启动检查它是否应该针对开发服务器或生产服务器运行,然后我可以设置连接字符串并且它们都可以正常工作。
但是有几个"数据源"已定义,他们使用两种不同的数据连接"。我想我只想拥有一个数据连接并指向数据的开发副本。
如果我的数据库有50个表和5个表单,那么只有一个"数据连接",多个数据源,其中一些数据源有一个 数据集和其中一些有多个数据集(它们是嵌套的)?或者我正确地考虑这些物体?
答案 0 :(得分:0)
无论你喜欢什么,你都可以做任何一种方式。这一切都取决于你想要的工作方式,我的系统有3个连接到不同的来源。很高兴把它放在一个地方,但是你有移动一切的麻烦。将它拆分只意味着您需要知道它的位置,并且具有正确的命名约定,以便您可以准确识别要连接的内容。所以DataSource =" DevServerProduction1"或DataSource =" LiveServerProduction1"。这将在每个表适配器上。
我继承了一个甚至没有开发环境的废话系统,所以我创建了一个与另一个dev服务器的新连接,带有一个live live的副本,当我准备好时,只是将连接字符串更改为Dev连接发布我刚刚将连接字符串更改为Live连接。
请确保在发布之前备份实时编程文件,只需将出现问题包装起来就可以恢复。
答案 1 :(得分:0)
我只想添加评论,但我的分数足够高,所以我必须在此发布抱歉。
老实说,它会杀死你更改所有表适配器并复制它们。您不仅要更改适配器名称,还要更改连接到它上面的所有代码,问题是当您继承像我的系统或您的系统时,您会发现到处都是陷阱陷阱,而我只是绕过它们。
您需要在源文件的根目录中进入Web.Config。我已经评论了我没有使用的那个,然后就在我准备发布时,我只是评论开发一个并取消对实时的注释。下面有一个例子。
<connectionStrings>
<!--DEVELOPMENT MODE-->
'<add name="SameNameConnectionForBoth1" connectionString="Date Source=connectionDNSorIPforDev;initial catalog=YourDatabaseName1;integrated security=false;user id=UsernameHere;password=PasswordHere;connect timeout=90; providerName="System.Data.EntityClient" />
'<add name="SameNameConnectionForBoth2" connectionString="Data Source=connectionDNSorIPforDev;Initial Catalog=YourDatabasesName2;Integrated Security=True;Timeout=90;" providerName="System.Data.SqlClient" />
<!--LIVE MODE-->
<add name="SameNameConnectionForBoth1" connectionString="Date Source=connectionDNSorIPforLive;initial catalog=YourDatabaseName1;integrated security=false;user id=UsernameHere;password=PasswordHere;connect timeout=90; providerName="System.Data.EntityClient" />
<add name="SameNameConnectionForBoth2" connectionString="Data Source=connectionDNSorIPforLive;Initial Catalog=YourDatabasesName2;Integrated Security=True;Timeout=90;" providerName="System.Data.SqlClient" />
</connectionStrings>
只有一个或另一个必须注释掉才能发挥作用。创建表适配器时,请选择&#34; SameNameConnectionForBoth1&#34;的连接名称。请注意,实时和开发模式有2种连接模式,如果您的表适配器需要转到另一个连接,您只需命名为#34; SameNameConnectionForBoth2&#34;。我不知道您当前的系统是什么,您可能只需要1个连接。您将根据命名约定定制上面的代码。
我希望这会对你有所帮助。
如果您需要更多帮助或详细信息,请随时提出。