【问题标题】:Can I use LINQ2SQL with ODBC?我可以将 LINQ2SQL 与 ODBC 一起使用吗?
【发布时间】:2015-10-03 07:01:02
【问题描述】:

我正在使用 SQL Server 2008 编写 ASP.NET MVC 应用程序。不幸的是,我可以连接到该数据库的唯一方法是在我的生产环境中通过 dsn 或 ODBC。在开发中,我使用了 Linq2SQL 层来访问数据库中的数据。有没有一种方法可以强制 Linq2SQL 使用 ODBC 而不是 SQL 客户端连接?

【问题讨论】:

    标签: linq-to-sql odbc


    【解决方案1】:

    Darin,虽然您可以使用 Peder 建议的解决方案,但它会破坏 Linq 的目的,因为您将直接查询服务器而不是映射。 Tom 对“硬编码”的看法是正确的,但有一种方法可以解决,您可以创建自己的界面,对概念的很好解释以及如何做到这一点:http://blogs.msdn.com/b/mattwar/archive/2008/11/18/linq-links.aspx

    【讨论】:

      【解决方案2】:

      LINQ to SQL 生成的代码在各处都硬编码了对 SQL 服务器连接的引用,所以没有。不过,您或许可以使用DBLinq

      【讨论】:

        【解决方案3】:

        是的,有一种方法可以将 ODBC 与 LINQ to SQL 一起使用,但需要一些额外的代码,并且 它的功能几乎没有那么丰富。我知道您可以为 SELECT 语句获取 ORM,但我不确定它是否适用于 UPDATEDELETE 语句。

        在下面的代码 sn-p 中,我首先在一个空的 Linq2Sql .dbml 文件中定义了我的模型(我手动创建了一个带有我需要的字段的 PurchaseOrder 对象)。但请注意我如何能够通过向其传递 ODBC 连接来创建新的数据上下文。最后,还有最后一个技巧:我必须使用数据上下文的 ExecuteQuery 方法和 SELECT 语句来获取我的采购订单。

        using (var connection = new OdbcConnection("Driver={iSeries Access ODBC Driver};System=serverName;UID=yourUid;PWD=yourPwd"))
        {
            var purchaseOrderContext = new Models.PurchaseOrdersDataContext(connection);
        
            var purchaseOrders = purchaseOrderContext.ExecuteQuery<Models.PurchaseOrder>("SELECT * FROM mySchema.myTable");
        }
        

        【讨论】:

          猜你喜欢
          • 2023-03-25
          • 2020-08-04
          • 2018-10-23
          • 2011-02-22
          • 2021-03-16
          • 2016-11-20
          • 2019-01-25
          • 2011-06-11
          • 2017-02-20
          相关资源
          最近更新 更多