2011-01-10 6 views
5

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

ответ

2

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

1

Да, есть способ использовать 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"); 
} 
5

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