with npgsqlconnection net framework asp .net linq linq-to-sql postgresql mono

.net - npgsqlconnection - Linq To Sql con PostgreSQL



postgresql net core (6)

¿Es posible usar LinqToSql con PostgreSQL (preferiblemente con Mono)? ¿Puede recomendar algún artículo donde se describa paso a paso?


Hay un proveedor de Linq de terceros para postgres (así como MySql y otras bases de datos) here .

Otra opción es ngpsql


No fuera de la caja. Tendría que encontrar un tercero que haya escrito un proveedor para PostgreSQL.

Uno de esos proveedores es DbLinq . Las instrucciones de instalación y uso se pueden encontrar here .


No, LINQ to SQL solo funciona con MS SQL Server. Debe utilizar un proveedor de terceros para acceder a la fuente de datos PostgreSQL. Te recomiendo que pruebes Devart LinqConnect . Además, este producto proporciona algunas características de Entity Framework, por ejemplo, tipo complejo, compatibilidad con tipos de herencia de diferencias, etc.


Utilice LinqToDB para PostgreSQL

https://www.nuget.org/packages/linq2db.PostgreSQL/

En Visual Studio, abra la consola de NuGet y ejecute lo siguiente:

PM> Install-Package linq2db.PostgreSQL

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 obtener su clase de contexto generada.

Ejemplo de contenido de este 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 , la clase se regenerará. Funciona bien para nuestra empresa de 21 desarrolladores.


Utilizo LINQ to SQL desde hace aproximadamente 2 años con las bases de datos MySQL y PostgreSQL (usando DbLinq en Windows, usando Mono en Linux y Mac OS X).

Entonces, LINQ to SQL NO está limitado a SQL Server, pero como se indicó anteriormente, necesita usar bibliotecas externas.

En Mono, DbLinq es la base del espacio de nombres System.Data.Linq: no es necesario desplegar / registrar ensamblajes DbLinq. Idem para el ensamblado de Npgsql: ya está disponible en las últimas versiones de Mono.

Debe tener en cuenta que el soporte es incompleto (tuve muchos problemas cuando intenté enlazar un control ObjectDataSource a un contexto de datos PostgreSQL: los resolví haciendo un enlace manual de datos con las entidades generadas). Pero esto es suficiente para la mayoría de las consultas de SQL (casi nunca he tenido ninguna consulta fallida: las uniones 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 proporcionando información sobre el proveedor de datos. Vea estos ejemplos cortos (nunca encontré 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

Personalmente, con Mono 2.10.6, utilizo este tipo de cadena de conexión: "Servidor = localhost; Base de datos = MiDB; ID de usuario = postgres; Contraseña = MiPassword; DbLinqProvider = PostgreSql; DbLinqConnectionType = NpgsqlConnection, NpgsqlConnection, Versión de versión. 0.0, Culture = neutral, PublicKeyToken = 5d8b90d52f46fda7 "

Nota: en Mono, la herramienta DbMetal se reemplaza por el comando "sqlmetal", que tiene los mismos parámetros (es solo un envoltorio alrededor de DbMetal).


Linq-to-SQL solo es compatible con SQL Server. Entity Framework soporta otras bases de datos también.