1

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

我不想每次我需要做一些事情来查看数据库是否链接到服务器或者我是否从.SDF. 我有两个映射表和字段的 .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

我需要能够只拥有一个适用于两种条件的潜艇。无论数据是来自.SDFSQL Server 数据库还是来自 SQL Server 数据库。我很感激你的时间。

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

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

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

4

0 回答 0