Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server LINQ到SQL和DBML文件-多数据库开发_Sql Server_Wpf_Vb.net_Linq To Sql - Fatal编程技术网

Sql server LINQ到SQL和DBML文件-多数据库开发

Sql server LINQ到SQL和DBML文件-多数据库开发,sql-server,wpf,vb.net,linq-to-sql,Sql Server,Wpf,Vb.net,Linq To Sql,我的发展方式可能不正确,欢迎任何建议 目前,我有一个使用SQL2008数据库的WPF应用程序。我在笔记本电脑和家用电脑上都有一份数据库副本。我的应用程序使用SVN进行版本控制,我显然能够从工作笔记本电脑转到家庭计算机,并根据需要进行更新/提交,以确保我使用的是应用程序的最新代码 然而,数据库是一个不同的故事,我所做的任何更改都会创建一个备份,然后将备份传输到另一台机器等。通过这种方式,我可以获得每个系统上的数据和更改。为了做到这一点,数据库连接使用不同的connectionstring,我在我的

我的发展方式可能不正确,欢迎任何建议

目前,我有一个使用SQL2008数据库的WPF应用程序。我在笔记本电脑和家用电脑上都有一份数据库副本。我的应用程序使用SVN进行版本控制,我显然能够从工作笔记本电脑转到家庭计算机,并根据需要进行更新/提交,以确保我使用的是应用程序的最新代码

然而,数据库是一个不同的故事,我所做的任何更改都会创建一个备份,然后将备份传输到另一台机器等。通过这种方式,我可以获得每个系统上的数据和更改。为了做到这一点,数据库连接使用不同的connectionstring,我在我的应用程序中更改了一个设置,根据我的位置使用不同的连接

我现在已经开始在我的应用程序中使用LINQtoSQL和DBML文件,最后我要问的问题是,我不知道如何更改它在代码中使用的连接字符串,以便它在DBML中使用正确的数据库


还有,有没有更好的方法来传输数据库,这样我就不需要进行备份和恢复?我没有对模式进行版本化的唯一原因是,我不确定它将如何处理我的数据,因为这是我开发的关键,ie各种环境设置等存储在数据库中,并在运行时进行。

您可以尝试Sql Server合并复制,并将Sql Compact 3.5用作笔记本电脑数据库,将master用作工作/家庭计算机数据库。但是,只能使用Sql Server标准版执行此操作

另一个选项是Microsoft同步框架。。这里


这是一个非常常见的问题,我从来没有找到一个最小且干净的解决方案。如何在机器之间保持所有值、变量、数据库和源文件的同步

  • SVN对源文件非常有用
  • 对于数据库,我尝试只使用一个DB,如果我们可以摆脱它。所有开发人员都指向一台托管数据库的机器,这样我们就不会在数据库设置和合并上浪费时间。如果这是不可能的,那么我们通常会在发生更改时转储数据库并分发.bak文件。您可以尝试将此文件添加到SVN,并且可以正常工作。您甚至可以将DB转储到计划中,以便SVN始终获得一个新副本。但要一次又一次地恢复数据库,仍然需要做很多工作。也许您可以将一些脚本连接到SVN(我们在windows中使用Tortise),并有一个自动完成的工作。那太好了

  • 对于配置文件-我使用ASP.NET,所以我有web.config、connectionString.config等,我做两件事之一-要么手动复制需要在机器之间更改的部分,然后注释掉不需要使用的部分(笨重),或者,我有时编写了ConfigurationSettings帮助器对象,这些对象根据当前机器名诊断配置键以决定要使用的设置。例如:

假设我当前的机器是DEV1。服务器是SERVER1。我将使用名称为DEV1.connections.sqlserver和SERVER1.connections.sqlserver的配置键。在代码中,我将使用helper方法GetConfig(“connections.sqlserver”)。GetConfig根据当前计算机名确定要使用的键

使用这种方法,我不必记得每次上传到服务器或更改内容时都要处理十几个.configs。但是我必须为运行应用程序的每台机器制作一个复制密钥,这可能会得到更多。对于大型团队,我不使用机器名,而是使用组名,并使用配置键将机器名分配给一个组,其思想是组中的每台机器都将以相同的方式设置该应用程序-相同的文件路径等

现在谈谈关于LINQ的第二个问题——当您创建一个LINQDBML时,它将向您的配置中添加一个连接字符串。您只需确保找到此connectionstring并将其复制到活动应用程序中。例如:

我有一个包含两个项目的解决方案: 1-网站 2-图书馆


我将dbml放入库项目中。如果我去查看库项目的App.config,我会看到LINQ想要使用的connectionstring。如果我将此connectionstring复制到网站的connectionstring.confing文件中,当我引用库并运行网站时,LINQ将能够看到它想要使用的connectionstring。

您可以使用red_gate的SQL COmpare和SQLDataCompare来编写对数据库的更改脚本。无论如何,您都应该有编写数据库更改脚本的习惯,因为在将更改移动到prod时,您需要这样做。我还将确保所有数据库更改都在SVN中,如果没有源代码管理中的脚本,我们不会对数据库进行任何更改。

我最终只使用了多个连接字符串,然后在移动位置时手动更改dbml文件上的连接。但是,我也有一些代码,可以根据位置的项目设置以编程方式对其进行更改

我还没有找到一个很好的数据库传输解决方案,并继续使用备份和恢复方法。

您的声明: 我现在已经开始在我的应用程序中使用LINQtoSQL和DBML文件,最后我要问的问题是,我不知道如何更改它在代码中使用的连接字符串,以便它在DBML中使用正确的数据库

是的,这是可能的

MYDataContext mycontext=新的MYDataContext(“您的连接字符串”)


有一个构造函数,您可以在其中更改连接字符串。

对于某些背景,在我的应用程序中,我在应用程序设置中构建了几个连接字符串。然后,我有另一个应用程序设置,它定义了我开发的位置,还有另一个应用程序设置,它定义了我是否处于测试/开发模式。然后在我的