2009-09-25 82 views
2
的DBLinq對於SQLite

我已經(經過一番努力顯著)得到通過的DBLinq的DBLinq/SQLite的和Mono的最新版本工作在OS X創建使用LINQ通過記錄

有誰successfulyl創建數據庫實體?

例如,我有如下表:

CREATE TABLE UserType (
    id integer primary key, 
    description text) 

我已經產生了我的* cs文件和我使用下面的代碼試圖創建一個新的用戶類型條目:

UserType newUserType = new UserType(); 
newUserType.id = null // Attempting to get SQLite to increment 
newUserType.description = "Administrator"; 

db.UserType.InsertOnSubmit(newUserType); 

db.SubmitChanges(); 

對SubmitChanges的調用拋出了一個關於無效語法的特例,與@特別相關(我猜在參數化查詢中做了插入操作)。它看起來像生成的代碼是特定於SQL Server的。有沒有修復或標誌我錯過了,或通過DbLinq插入記錄到不支持的SQLite?

+0

我想用dbmetal生成.cs代碼。我得到一個異常。您能否請您提供一個如何從sqlite數據庫生成.cs(代碼)文件的示例? –

+0

@Jitesh你能告訴我你是如何使用DbMetal獲得cs和dbml文件的?如果可能的話在這裏回答我的問題http://stackoverflow.com/questions/2396143/creating-linq-to-sqlite-dbml-from-dblinq-source-code – Amsakanna

回答

3

原來,當使用DbLinq時,您需要修改數據庫連接字符串,以便Mono的System.Data.Linq知道在生成其SQL代碼時要使用哪個數據庫提供程序。

老:

SqliteConnection("Data Source=MyDatabase.sqlite"); 

新:

SqliteConnection("DbLinqProvider=Sqlite;Data Source=MyDatabase.sqlite"); 

就這麼簡單。

+0

SqliteConnection類在哪裏? –

+0

好吧,要回答我自己的問題,您需要引用System.Data.SQLite.DLL庫 –