2011-01-10 24 views
5

Estoy escribiendo y la aplicación ASP.NET MVC con SQL Server 2008. Desafortunadamente, la única forma en que puedo conectarme a esa base de datos es mediante un dsn u ODBC en mi entorno de producción. En desarrollo, he usado una capa Linq2SQL para acceder a los datos en la base de datos. ¿Existe alguna manera de forzar a Linq2SQL a utilizar ODBC para la conectividad en lugar de una conexión de SQL Client?¿Puedo usar LINQ2SQL con ODBC?

Respuesta

2

El código generado por LINQ to SQL tiene referencias codificadas a las conexiones del servidor SQL en todas partes, por lo que no. Sin embargo, es posible que pueda usar DBLinq.

1

Sí, hay una forma de usar ODBC con LINQ a SQL, pero se necesita un código adicional y no será tan rico en funciones. Sé que puede obtener ORM para las declaraciones SELECT, pero no estoy seguro si funcionará para las declaraciones UPDATE o DELETE.

En el siguiente fragmento de código, primero definí mi modelo en un archivo .dbml Linq2Sql vacío (creé manualmente un objeto PurchaseOrder con los campos que necesito). Pero observe cómo puedo crear un nuevo contexto de datos pasando una conexión ODBC a él. Finalmente, hay un último truco: tengo que usar el método ExecuteQuery del contexto de datos junto con una declaración SELECT para obtener mis órdenes de compra.

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

Darin, mientras que se puede utilizar la solución sugerida por Peder, se frustraría el propósito de LINQ, ya que ustedes serán Consulta del servidor directamente en lugar de mapeo. Tom tiene razón sobre el "código rígido", pero hay una forma de evitarlo, puede crear su propia interfaz, una gran explicación sobre los conceptos y cómo hacerlo está aquí: http://blogs.msdn.com/b/mattwar/archive/2008/11/18/linq-links.aspx

Cuestiones relacionadas