Linq to sql LINQ到SQL数据库服务器覆盖
编写VB.NETWindows应用程序 我们有一个由3台SQL服务器组成的局域网,每台服务器上都有相同的数据库表。 唯一的区别是适用于3个不同用户位置的数据 尝试使用LINQtoSQL,这是我的新手,因此产生了这个问题 我已经创建了一个.dbml文件并连接到其中一个服务器。然后我拖 好几张桌子。连接字符串存储在项目设置中。 然后,我又为其他服务器创建了两个连接字符串 我的问题是,我是否可以在代码中覆盖数据上下文连接以进行连接 是否基于可变条件连接到其他2台服务器 这是我到目前为止的代码,但我的“覆盖”似乎不起作用。当我 调试数据上下文变量是否显示设计时的原始连接 “”基于位置创建到SQL server的LINQ datacontext连接 作为新DataBaseDataContext()的公共dbContextLinq to sql LINQ到SQL数据库服务器覆盖,linq-to-sql,Linq To Sql,编写VB.NETWindows应用程序 我们有一个由3台SQL服务器组成的局域网,每台服务器上都有相同的数据库表。 唯一的区别是适用于3个不同用户位置的数据 尝试使用LINQtoSQL,这是我的新手,因此产生了这个问题 我已经创建了一个.dbml文件并连接到其中一个服务器。然后我拖 好几张桌子。连接字符串存储在项目设置中。 然后,我又为其他服务器创建了两个连接字符串 我的问题是,我是否可以在代码中覆盖数据上下文连接以进行连接 是否基于可变条件连接到其他2台服务器 这是我到目前为止的代码,但我的“
我找到了一个很好的解决方案,只需要几个步骤就可以完成设置,但什么都没有 困难。请记住,服务器和数据库需要相同 在模式中,但我有一个工作循环,请参见步骤5 1) 创建DBML文件并将一些表拖到其中。我的名字叫“数据库”。 现在必须对DBML的数据上下文属性执行一些操作,另外: A) 展开connection属性并清除在那里看到的任何连接字符串。 B) 将应用程序设置设置为false,以便项目不使用任何设置。 C) 从DBML中删除DBML自动创建的所有连接字符串(设置为无) (我这样做是为了确保设置文件连接没有覆盖我的运行时代码) 2) 将静态SQL server连接添加到app.config文件,如下所示 3) 这里的想法是在所有表单和应用程序中只使用一个数据上下文 类等,所以设置一个公共变量。我们想做的是 给它一个初始连接字符串,以后可以更改 4) 使用某种变量来确定服务器/数据库“覆盖”的工作方式。 我在MyProject(VB)中使用了一个名为“location”的My.settings字符串变量。这是 以启动时调用的另一种形式保存 现在执行一次“覆盖”(程序启动表单或模块),并允许它在全球各地使用 5) 我现在可以连接和访问3个不同的SQL Server,以及3个不同的数据库 使用最少的代码。现在,我的数据库几乎是相同的,但如果不是,这里有一个技巧。 我碰巧在employees表中有一个额外的字段列。我把那个拖进了厨房 DBML。只要在LINQ查询中指定要避免的列名称,就可以避免 查询“覆盖”到另一个数据库时出现异常错误 我不能把这一切归功于我。 我在这里找到了其他代码。 在这里:
有人知道怎么做吗?非常感谢。
Select Case My.Settings.Location
Case "Bowling Green"
dbContext.Connection.ConnectionString = My.Settings.bg_prodConnectionString
Dim query = From emp In dbContext.employees _
Select emp
For Each emp In query
MsgBox(emp.name.ToString())
Next
Case "Delphos"
Dim DelphosContext As New DataBaseDataContext(My.Settings.delphos_prodConnectionString)
'DelphosContext.Connection.ConnectionString = My.Settings.delphos_prodConnectionString
Dim query = From emp In DelphosContext.employees _
Select emp _
Where emp.employee_id = "0028"
Order By emp.name
For Each emp In query
MsgBox(emp.name.ToString())
Next
Case "Tiffin"
dbContext.Connection.ConnectionString = My.Settings.tiffin_prodConnectionString
End Select
<pre>
<appSettings>
<add key="BGConnectionString" value="bg_prodConnectionString"/>
<add key="DelphosConnectionString" value="delphos_prodConnectionString"/>
<add key="TiffinConnectionString" value="tiffin_prodConnectionString"/>
</appSettings>
<connectionStrings>
<add name="bg_prodConnectionString" connectionString="Data Source=tmd-bg-sql;Initial Catalog=bg_prod;Persist Security Info=True;User ID=sa"
providerName="System.Data.SqlClient" />
<add name="delphos_prodConnectionString" connectionString="Data Source=tmd-d2-sql;Initial Catalog=delphos2_prod;Persist Security Info=True;User ID=sa"
providerName="System.Data.SqlClient" />
<add name="tiffin_prodConnectionString" connectionString="Data Source=tmd-tiffin-sql;Initial Catalog=tiffin_prod;Persist Security Info=True;User ID=sa"
providerName="System.Data.SqlClient" />
</connectionStrings>
<code>
<pre>
Public dc As New DataBaseDataContext("Data Source=tmd-bg-sql;Initial Catalog=bg_prod;Persist Security Info=True;User ID=sa")
<code>
<pre>
' save this first settings first before executing this code block
Select Case My.Settings.Location
Case "Bowling Green"
' Read the ConnectionStrings from the config file
Dim ConnectionString = ConfigurationManager.ConnectionStrings(ConfigurationManager.AppSettings.Get("BGConnectionString")).ConnectionString
dc.Connection.ConnectionString = ConnectionString
Try
Dim query = From emp In dc.employees _
Select emp.name, emp.employee_id _
Order By name
For Each emp In query
MsgBox("BG")
Exit For
'MsgBox(emp.name)
Next
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Case "Delphos"
' Read the ConnectionStrings from the config file
Dim ConnectionString = ConfigurationManager.ConnectionStrings(ConfigurationManager.AppSettings.Get("DelphosConnectionString")).ConnectionString
dc.Connection.ConnectionString = ConnectionString
Dim query = From emp In dc.employees _
Select emp.name, emp.employee_id _
Order By name
For Each emp In query
MsgBox("Delphos")
Exit For
Next
Case "Tiffin"
' Read the ConnectionStrings from the config file
Dim ConnectionString = ConfigurationManager.ConnectionStrings(ConfigurationManager.AppSettings.Get("TiffinConnectionString")).ConnectionString
dc.Connection.ConnectionString = ConnectionString
Dim query = From emp In dc.employees _
Select emp.name, emp.employee_id _
Order By name
For Each emp In query
MsgBox("Tiffin")
Exit For
Next
End Select
' reference the dc context connection from another form or class
' instance the MDI form to get the public connection
Dim MDI As New MDIParent
Dim query = From emp In MDI.dc.employees _
Select emp.name, emp.employee_id _
Order By name
For Each emp In query
MsgBox("Tiffin")
Exit For
Next
<code>