2011-11-09 7 views
1

私はSQLiteデータベースにデータを格納するC#でプロジェクトを開発しています(または開発しようとしています)。オブジェクトリレーショナルマッピングにLinqを使用したいと思います。私が読んだことによると、System.Data.SQLitedblinqをダウンロードした場合、SQLiteで使用することは可能です。.NET 4.0 + Linq + SQLite + DbLink - どうすれば一緒に作業できますか?

ほとんどの場合、DBからデータを読み込むことはできますが、何かを挿入しようとするとSQL構文エラーが発生します。私は、LINQのは、このようなクエリを実行しようとしているログで確認しました:

{INSERT INTO [sometable]([columnone], [columntwo]) 
VALUES (@p0, @p1) 

SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value] 
-- @p0: Input String (Size = 4000; Prec = 0; Scale = 0) [foo] 
-- @p1: Input String (Size = 4000; Prec = 0; Scale = 0) [bar] 
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.0.30319.1 
} 

MSサーバーではなく、SQLiteのためのSQLクエリのようです。怒っている部分はSqlProvider(Sql2008)です。 dblinqが提供するものに置き換えてはいけませんか?

私のデータベースクラスは次のようになります。

[Database] 
class MyDatabase : DataContext 
{ 
    public LibraryDatabase() 
     : base(new SQLiteConnection(
        "DbLinqProvider=Sqlite; " + 
        "Data Source=database.s3db;")) 
    { 
    } 

    public Table<SomeObject> SomeTable; 
} 

接続文字列がdblinq wikiから取られています。

なぜ機能しないのですか?私は.NET 4.0を使用しているからですか?誰もこのような組み合わせをうまく使っていますか? Linqプロバイダを置き換える別の方法はありますか?

EDIT:テーブルマッピング:テーブル間の

[Table(Name="sometable")] 
class Element 
{ 
    [Column(Name = "id", IsPrimaryKey = true, IsDbGenerated=true)] 
    public int Id { get; set; } 

    [Column(Name="columnone")] 
    public string PropertyOne {get; set;} 

    [Column(Name="columntwo")] 
    public string PropertyTwo {get; set;} 
} 

すべての関係はテストのためにコメントアウトした(私はエラー)は、foreachループを使用して(表を読んだとして、ここで動作しているようです疑うが) (助けにならない)。 要素には、次のコードを挿入されている:あなたはORMのためのEntity Frameworkのを使用している

myDatabase.SomeTable.InsertOnSubmit(element); 
myDatabase.SubmitChanges(); 
+0

テーブルマッピングはどのように見えますか? – Pieter

答えて

1

私は推測していますか?

MyDatabaseクラスでは、DataContextから継承しています。これは、LINQ to SQLフレームワークのメインエントリポイントを表します。これはSQL Serverでうまく動作します。 SQLiteではそれほどうまくいきません。

代わりに、ObjecContextクラスを継承します。これは、エンティティデータをオブジェクトとしてクエリして処理するための機能を提供します。おそらく、あなたのクエリに使用するコードを変更する必要がありますが、それはかなり簡単です。

Entity FrameworkとObjectContextで検索を行うと、良い例がたくさんあります。

Patrick。

関連する問題