Могу ли я использовать LINQ2SQL с ODBC? - PullRequest
5 голосов
/ 10 января 2011

Я пишу и приложение ASP.NET MVC с SQL Server 2008. К сожалению, я могу подключиться к этой базе данных только через dsn или ODBC в моей производственной среде. В процессе разработки я использовал слой Linq2SQL для доступа к данным в базе данных. Можно ли заставить Linq2SQL использовать ODBC для подключения, а не для подключения к клиенту SQL?

Ответы [ 3 ]

5 голосов
/ 07 декабря 2012

Дарин, хотя вы могли бы использовать решение, предложенное Педером, оно побеждает цель Linq, так как вы будете запрашивать сервер напрямую, а не сопоставлять. Том прав насчет «жестко запрограммированного», но есть способ обойти, вы можете создать свой собственный интерфейс, отличное объяснение концепций и как это сделать здесь: http://blogs.msdn.com/b/mattwar/archive/2008/11/18/linq-links.aspx

2 голосов
/ 10 января 2011

Код, сгенерированный LINQ to SQL, содержит жестко закодированные ссылки на соединения с сервером SQL повсюду, поэтому нет. Однако, вы можете использовать DBLinq .

1 голос
/ 08 ноября 2012

Да, есть способ использовать ODBC с LINQ to SQL, но требуется некоторый дополнительный код, и не будет столь же многофункциональным .Я знаю, что вы можете получить ORM для SELECT операторов, но я не уверен, будет ли он работать для 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");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...