是否有可能在PostgreSQL中使用LinqToSql(最好是使用Mono)?你能推薦一些描述一步一步的文章嗎?Linq To PostgreSQL與Sqlql
回答
Linq-to-SQL
僅支持SQL服務器。 Entity Framework也支持其他數據庫。
不,LINQ to SQL只適用於MS SQL Server。你必須使用第三方提供者來訪問PostgreSQL數據源。我建議你試試Devart LinqConnect。此外,本產品還提供了Entity Framework的一些功能,例如 - 複雜類型,差異繼承類型支持等。
我使用LINQ to SQL,因爲MySQL和PostgreSQL數據庫使用了大約2年的時間(在Windows上使用DbLinq,使用Mono Linux和Mac OS X)。
因此,LINQ to SQL不限於SQL Server,但如上所述,您需要使用外部庫。
在Mono上,DbLinq是System.Data.Linq命名空間的基礎:不需要部署/註冊DbLinq程序集。同樣適用於Npgsql程序集:它已經由最新版本的Mono提供。
您應該意識到支持不完整(當我嘗試將ObjectDataSource控件綁定到PostgreSQL數據上下文時,我遇到了很多問題:我通過與生成的實體進行手動數據綁定來解決它們)。但這對於大多數SQL查詢來說已經足夠了(我幾乎從未有過任何失敗的查詢:複雜的關節可以通過幾個更簡單的查詢來模擬)。
DbLinq和LINQ to SQL幾乎沒有區別。只有連接字符串必須通過提供有關數據提供者的信息來定製。看到這些短樣品(我從來沒有發現有關使用中的DBLinq任何真正的教程):
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,我使用這種類型的連接字符串:「服務器=本地主機;數據庫= MYDB;用戶ID = Postgres的;密碼= MyPassword輸入; DbLinqProvider = PostgreSQL的; DbLinqConnectionType = Npgsql.NpgsqlConnection,Npgsql的,版本= 4.0.0.0,文化=中性公鑰= 5d8b90d52f46fda7"
注:單聲道,在DbMetal工具被替換爲「sqlmetal」命令,它具有相同的參數(它只是DbMet的包裝人)。
使用LinqToDB PostgreSQL的
https://www.nuget.org/packages/linq2db.PostgreSQL/
在Visual Studio中,打開的NuGet控制檯並運行以下命令:
PM> Install-Package linq2db.PostgreSQL
你最終將與解決方案中的一個文件夾:LinqToDB.PostgreSQL
。在該文件夾中有一個名爲CopyMe.PostgreSQL.tt.txt
的文件。在文件中讀入如何操作來生成您的Context類。這個文件的內容
例子:
<#@ 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();
#>
每次你保存*.tt
文件,班會再生。 適合我們的21位開發人員。
- 1. 與LINQ to SQL中
- 2. DataGridview與linq-to-sql
- 3. 使用DbLINQ時LINQ to PostgreSQL錯誤
- 4. 多線程與LINQ to SQL
- 5. LINQ to SQL與SQL Azure
- 6. 的LINQ to XML與謂詞
- 7. 使用LINQ to SQL與Oracle
- 8. XML to LINQ與Digg API
- 9. 的LINQ to XML與和
- 10. 問題與LINQ to SQL的
- 11. LINQ to SQL與where case case
- 12. LINQ to SQL與企業庫
- 13. LINQ to SQL與NULL值
- 14. SQL的Rownumber與Linq-to-entities
- 15. COUNT(1)OVER()與Linq to Sql
- 16. Linq to Entities DefaultIfEmpty
- 17. 用PDO sqlql分頁
- 18. LINQ to Object to DataSet
- 19. mySQL to postgreSQL
- 20. Postgresql varchar to int
- 21. 從Linq-to-Entities中選擇Linq-to-XML?
- 22. Linq to SQL比Linq to Entities更快嗎?
- 23. 如何使用postgresql SIMILAR TO與變量
- 24. c#linq to xml to list
- 25. Linq to entities:Unions + Distinct
- 26. LINQ to SQL Paging
- 27. LINQ to SQL LoadWith
- 28. LINQ to dataset:CopyToDataTable()
- 29. Linq to SQl
- 30. LINQ to SQL Translation
http://www.mono-project.com/Compatibility實體框架在Mono上不受支持。 – skolima 2011-02-01 11:59:39