2011-01-31 12 views
23

PostgreSQLでLinqToSqlを使用することはできますか?あなたはステップバイステップで記載された記事をお勧めできますか?Linq to PostgreSQL

答えて

10

出荷時には表示されません。 PostgreSQLのプロバイダを作成した第三者を探す必要があります。

このようなプロバイダの1つはDbLinqです。インストールおよび使用の手順はhereです。

8

postgresのサードパーティのLinqプロバイダ(MySqlと他のデータベースと同様)hereがあります。

別のオプションは、ngpsql

4

Linq-to-SQLのみSQL Serverをサポートしています。 Entity Frameworkは他のデータベースもサポートしています。

+3

http://www.mono-project.com/Compatibility Entity FrameworkはMonoではサポートされていません。 – skolima

+5

EntityFramework - Mono 2.11.3以降で利用可能です。 – UserControl

2

いいえ、LINQ to SQLはMS SQL Serverでのみ動作します。 PostgreSQLのデータソースにアクセスするには、サードパーティのプロバイダを使用する必要があります。 Devart LinqConnectを試してみることをお勧めします。

15

私はLINQ to SQLをMySQLとPostgreSQLデータベースで約2年間使用しています(Windowsの場合はDbLinqを使用し、Monoを使用している場合はMonoを使用しています)。この製品はEntity Frameworkのいくつかの機能を提供します。 LinuxおよびMac OS X)をインストールします。

LINQ to SQLはSQL Serverに限定されませんが、上記のように外部ライブラリを使用する必要があります。

Monoでは、DbLinqアセンブリを展開/登録する必要はありません.DbLinqはSystem.Data.Linq名前空間の基盤です。 NpgsqlアセンブリのIdem:これは、Monoの最新バージョンによって既に提供されています。

サポートが不完全であることに注意してください(ObjectDataSourceコントロールをPostgreSQLのデータコンテキストにバインドしようとすると、多くの問題が発生しました。生成されたエンティティで手作業でデータバインディングを行うことで解決しました)。しかし、これはほとんどのSQLクエリでは十分です(私はほとんど何も失敗クエリを持っていない:複雑な関節はいくつかのより簡単なクエリでシミュレートすることができます)。

DbLinqとLINQ to SQLの違いはほとんどありません。データプロバイダに関する情報を提供することによって、接続文字列のみをカスタマイズする必要があります。

http://www.mono-project.com/Release_Notes_Mono_2.6
http://www.jprl.com/Blog/archive/development/mono/2009/Mar-12.html

個人的に

、モノ2.10.6で、私は、接続文字列のこのタイプの使用:これらの短いサンプルを参照してください(私はDbLinqの使用についての本当のチュートリアル見つかっていない)「サーバーを= localhostを;データベース= mydbという;ユーザーID = postgresの;パスワード= mypasswordという。DbLinqProvider = PostgreSQLの; DbLinqConnectionType = Npgsql.NpgsqlConnection、Npgsqlの、バージョン= 4.0.0.0、文化=中立、なPublicKeyToken = 5d8b90d52f46fda7"

注:モノラルで、 DbMetalツールは、同じパラメータを持つ "sqlmetal"コマンドに置き換えられます(DbMetのラッパーです) al)。

2

PostgreSQLの

に使用LinqToDB Visual Studioで

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

、オープンNuGetコンソールと次のコマンドを実行します。

PM> Install-Package linq2db.PostgreSQL

あなたは、溶液中のフォルダになってしまいます。LinqToDB.PostgreSQL 。フォルダ内にはCopyMe.PostgreSQL.tt.txtというファイルがあります。 Contextクラスを生成するために何をすべきかをファイルで読んでください。このファイルの内容の

例:あなたは*.ttファイルを保存

<#@ 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(); 
#> 

毎回、クラスが再生成されます。 21人の開発者の私たちの会社でうまく動作します。