我正在使用SQL Server 2008编写ASP.NET MVC应用程序。不幸的是,我可以连接到该数据库的唯一方法是在我的生产环境中通过dsn或ODBC。在开发中,我使用了Linq2SQL层来访问数据库中的数据。有没有办法可以强制Linq2SQL使用ODBC进行连接而不是SQL客户端连接?
答案 0 :(得分:5)
答案 1 :(得分:2)
LINQ to SQL生成的代码在整个地方都有对SQL服务器连接的硬编码引用,所以没有。但是,您可以使用DBLinq。
答案 2 :(得分:1)
是的,有一种方法可以将ODBC与LINQ to SQL一起使用,但是需要一些额外的代码,它几乎不会像功能丰富的。我知道您可以为SELECT
语句获取ORM,但我不确定它是否适用于UPDATE
或DELETE
语句。
在下面的代码片段中,我首先在一个空的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");
}