访问SDF和SQL Server数据源的一致性

时间:2012-12-06 19:45:47

标签: sql-server vb.net linq-to-sql sql-server-ce

如果客户端支持数据,我的应用程序可以为数据运行.SDF文件(SQL Server Compact),如果客户端不支持.SDF文件,则可以运行SQL Server数据库。唯一的问题是编写代码,无论我是处理一个还是另一个,都会汇集到一个共同的轨道中。让我举几个例子说明我要去哪里。

我不想每次需要做某事时都要编写条件语句来查看数据库是否链接到服务器,或者我是否从.SDF访问它,所以我切换了语法到(SQL到Linq)。我有两个.dbml文件映射表和字段,以便我现在可以使用sql到linq语法。我唯一的问题是,如果两个.dbml文件存在于同一个项目中,它们会发生冲突,因为它们都有公开声明。据我所知,我不能确切地将这些类设为私有或以某种方式将它们分开,这样即使它们具有相同的名称和字段,它们也不会抛出错误,说明该类有多个签名。

Public Sub SDFAccess()
        Dim dc As New Members("Data Source = C:\Members.sdf")  

        Dim q = _
            From Leader In dc.GetTable(Of Roles)() _
            Select Leader

        DataGridView2.DataSource = q
 End Sub

 Public Sub ServerAccess()
        Dim dc As New ServerDBDataContext()

        Dim q = _
            From sLeader In dc.GetTable(Of ServerRole)() _
            Select sLeader

        DataGridView2.DataSource = q
    End Sub

我需要能够只为一个子条件运行两个条件。无论数据是来自.SDF还是SQL Server数据库。我很感激你的时间。

更新-1 所以我在.DBML Designer文件中注意到New()的重载。只要两个数据源完全相同,我是否可以只使用一个.DBML文件用于服务器或Compact访问?

更新-2 我还假设,如果一切都相同,那么两个.DBML之间唯一阻碍我的是System.Data.Linq.Mapping.DatabaseAttribute(Name:=“TestServer”)>服务器.DBML文件中的属性。

更新-3 好的新方法,也许......我可以从两个单独生成的.DBML文件中包含两个类,只使用我需要的属性然后将上下文提交回数据源。问题再次是如何强制程序忽略命名空间中的类,而不是每次我想执行某些操作时写入条件。我开始怀疑我是否应该只使用数据集作为中介。我真的希望能为这一个拿起Linq-Sql。

0 个答案:

没有答案