C# .NET4.0+;Linq+;SQLite+;DbLink-如何使所有功能一起工作?

C# .NET4.0+;Linq+;SQLite+;DbLink-如何使所有功能一起工作?,c#,.net,linq,sqlite,dblinq,C#,.net,Linq,Sqlite,Dblinq,我正在开发(或试图开发)一个C#项目,它将数据存储在SQLite数据库中。我想使用Linq进行对象关系映射。根据我读到的内容,如果您下载并安装了SQLite,就可以将其与SQLite一起使用 虽然它主要用于从数据库读取数据,但在尝试插入任何内容时,我会遇到SQL语法错误。我已在日志中检查Linq正在尝试执行这样的查询: {INSERT INTO [sometable]([columnone], [columntwo]) VALUES (@p0, @p1) SELECT CONVERT(Int,

我正在开发(或试图开发)一个C#项目,它将数据存储在SQLite数据库中。我想使用Linq进行对象关系映射。根据我读到的内容,如果您下载并安装了SQLite,就可以将其与SQLite一起使用

虽然它主要用于从数据库读取数据,但在尝试插入任何内容时,我会遇到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 Server的SQL查询,而不是SQLite。镦粗部分是这个
SqlProvider(Sql2008)
。它不应该被dblinq提供的东西所取代吗

我的数据库类如下所示:

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

    public Table<SomeObject> SomeTable;
}
表之间的所有关系都被注释掉以进行测试(没有帮助)。 然后插入具有以下代码的元素:

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

我猜你是在用实体框架做ORM

在MyDatabase类中,您继承的是。这表示LINQ到SQL框架的主要入口点。这对于SQL Server非常有效。SQLite不太好用

而是从类继承。这为查询和处理实体数据作为对象提供了便利。您可能需要修改用于查询的代码,但这应该非常简单

在实体框架和ObjectContext上做一些搜索,这里有很多很好的例子


Patrick.

我猜您是在使用实体框架进行ORM

在MyDatabase类中,您继承的是。这表示LINQ到SQL框架的主要入口点。这对于SQL Server非常有效。SQLite不太好用

而是从类继承。这为查询和处理实体数据作为对象提供了便利。您可能需要修改用于查询的代码,但这应该非常简单

在实体框架和ObjectContext上做一些搜索,这里有很多很好的例子


Patrick.

表映射看起来像什么?表映射看起来像什么?
myDatabase.SomeTable.InsertOnSubmit(element);
myDatabase.SubmitChanges();