¿Es posible utilizar LinqToSql con PostgreSQL (preferiblemente con Mono)? ¿Puede recomendar algún artículo donde se describa paso a paso?Linq a Sql con PostgreSQL
Respuesta
Linq-to-SQL
sólo es compatible con SQL Server. Entity Framework también es compatible con otras bases de datos.
No, LINQ to SQL funciona solo con MS SQL Server. Debe utilizar el proveedor de la tercera parte para acceder al origen de datos de PostgreSQL. Te recomiendo que pruebes Devart LinqConnect. También este producto proporciona algunas características de Entity Framework, por ejemplo: tipo complejo, soporte de tipo diferencia de herencia, etc.
Uso LINQ to SQL desde hace 2 años con las bases de datos MySQL y PostgreSQL (usando DbLinq en Windows, usando Mono en Linux y Mac OS X).
Así LINQ a SQL no se limita a SQL Server, pero como se ha dicho, es necesario utilizar librerías externas.
en Mono, DbLinq es la base del espacio de nombres System.Data.Linq: no es necesario para desplegar/registrar los ensamblados DbLinq. Idem para el ensamblaje Npgsql: ya está provisto por las últimas versiones de Mono.
Debe tener en cuenta que la compatibilidad es incompleta (tuve numerosos problemas cuando intenté vincular un control ObjectDataSource con un contexto de datos PostgreSQL: los resolví haciendo un enlace de datos manual con las entidades generadas). Pero esto es suficiente para la mayoría de las consultas SQL (casi nunca he tenido consultas fallidas: las articulaciones complejas se pueden simular mediante varias consultas más simples).
hay poca diferencia entre DbLinq y LINQ a SQL. Solo la cadena de conexión debe personalizarse mediante el suministro de información sobre el proveedor de datos. Ver estas muestras cortas (que nunca se ha encontrado ningún tutorial real sobre el uso de DbLinq):
http://www.mono-project.com/Release_Notes_Mono_2.6
http://www.jprl.com/Blog/archive/development/mono/2009/Mar-12.html
En lo personal, con Mono 2.10.6, utilizo este tipo de cadena de conexión: "Servidor = localhost ; Database = MyDB; User Id = postgres; contraseña = MiContraseña; DbLinqProvider = PostgreSql; DbLinqConnectionType = Npgsql.NpgsqlConnection, Npgsql, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 5d8b90d52f46fda7"
Nota: en Mono, el La herramienta DbMetal es reemplazada por el comando "sqlmetal", que tiene los mismos parámetros (es solo un envoltorio alrededor de DbMet) Alabama).
Uso LinqToDB para PostgreSQL
https://www.nuget.org/packages/linq2db.PostgreSQL/
En Visual Studio, la consola NuGet abierta y ejecute el siguiente:
PM> Install-Package linq2db.PostgreSQL
que va a terminar con una carpeta en su solución: LinqToDB.PostgreSQL
. Dentro de la carpeta hay un archivo llamado CopyMe.PostgreSQL.tt.txt
. Lea en el archivo qué hacer para generar su clase de contexto.
ejemplo de esto el contenido del archivo:
<#@ template language="C#" debug="True" hostSpecific="True" #>
<#@ output extension=".generated.cs" #>
<#@ include file="$(ProjectDir)LinqToDB.Templates\LinqToDB.PostgreSQL.Tools.ttinclude" #>
<#@ include file="$(ProjectDir)LinqToDB.Templates\PluralizationService.ttinclude" #>
<#
/*
1. Copy this file to a folder where you would like to generate your data model,
rename it, and delete .txt extension. For example:
MyProject
DataModels
MyDatabase.tt
2. Modify the connection settings below to connect to your database.
3. Add connection string to the web/app.config file:
<connectionStrings>
<add name="MyDatabase" connectionString="Server=MyServer;Port=5432;Database=MyDatabase;User Id=postgres;Password=TestPassword;Pooling=true;MinPoolSize=10;MaxPoolSize=100;Protocol=3;" providerName="PostgreSQL" />
</connectionStrings>
4. To access your database use the following code:
using (var db = new MyDatabaseDB())
{
var q =
from c in db.Customers
select c;
foreach (var c in q)
Console.WriteLine(c.ContactName);
}
5. See more at https://github.com/linq2db/t4models/blob/master/Templates/ReadMe.LinqToDB.md.
*/
NamespaceName = "DataModels";
LoadPostgreSQLMetadata("MyServer", "5432", "MyDatabase", "postgres", "TestPassword");
// LoadPostgreSQLMetadata(string connectionString);
GenerateModel();
#>
Cada vez que guarde el archivo *.tt
, se regenerará la clase. Funciona bien para nuestra empresa de 21 desarrolladores.
- 1. NOLOCK con Linq a SQL
- 2. ¿Linq a SQL o Linq a DataSet?
- 3. LINQ a SQL .Any() con múltiples condiciones?
- 4. ¿Qué pasa con Linq a SQL?
- 5. Convertir consulta SQL a LINQ
- 6. LINQ a SQL decimal Parámetro
- 7. Linq a SQL lambda join
- 8. Señales en Linq a Sql?
- 9. Linq a SQL y teniendo
- 10. LINQ a SQL Ingreso cuestiones
- 11. Depuración LINQ a SQL SubmitChanges()
- 12. Relaciones uno a muchos en (PostgreSQL) SQL
- 13. migrar datos de MS SQL a PostgreSQL?
- 14. Cadena a CLOB con postgreSQL
- 15. linq a sql comprobando nulo
- 16. Linq a SQL en Mono?
- 17. Traducir sentencia LINQ a sql
- 18. Asociación LINQ a SQL Asignación
- 19. Linq a SQL: seleccione optimización
- 20. ¿Cómo extiendes Linq a SQL?
- 21. Linq a Sql - Muchos a muchos - CRUD
- 22. Caso cadena insensible comparar con LINQ a SQL y LINQ a objetos
- 23. Devolviendo un único valor con Linq a SQL
- 24. Subcadena de un DateTime con extensiones de Linq a Sql
- 25. lista se unen con LINQ a SQL consulta
- 26. .NET Datos dinámicos Muchos a muchos con LINQ to SQL
- 27. Consulta de LINQ a SQL con "NO EN"
- 28. Convertir consulta SQL (con subconsulta correlacionada) a LINQ en C#
- 29. Refactor LINQ a SQL/Entidades Consulte con muchas subconsultas
- 30. Borrando filas en una tabla con Linq a SQL
http://www.mono-project.com/Compatibility Entity Framework no es compatible con Mono. – skolima
EntityFramework - Disponible desde Mono 2.11.3. – UserControl