我可以在ODBC中使用LINQ2SQL吗?

时间:2011-01-10 04:50:20

标签: linq-to-sql odbc

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

LINQ to SQL生成的代码在整个地方都有对SQL服务器连接的硬编码引用,所以没有。但是,您可以使用DBLinq

答案 2 :(得分:1)

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

在下面的代码片段中,我首先在一个空的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");
}