如何正确使用Linq-to-SQLite?

时间:2009-11-24 16:43:47

标签: linq sqlite

我已从http://sqlite.phxsoftware.com/下载并安装了linq-to-sqlite 但是以下测试代码:

[ Table( Name = "items" ) ]
public class MyItem
{
  [ Column( IsPrimaryKey = true ) ]
  int MyId;
}

public class MyDb : DataContext
{
  public MyDb( IDbConnection c ) : base( c ) {}
  public Table< MyItem > myItems;
}

var connection = new SQLiteConnection( "Data Source=my.db;" )
var database = new MyDb( connection );
database.CreateDatabase();

“CreateDatabase”失败,异常:

  

SQLite错误

     

靠近“DATABASE”:语法错误

我做错了什么?

2 个答案:

答案 0 :(得分:1)

似乎是Microsoft SQL特有的'DataContext'基类。 SQLite ADO .NET支持LINQ,但推荐的方法是使用GUI向导生成数据库访问类。这样的类不会继承'DataContext',并允许在其上使用LINQ。

答案 1 :(得分:1)

您将Linq与SQL(仅适用于SQL Server)和Linq to Entities(又称实体框架)混淆。 SQLite ADO.NET提供程序支持实体框架,而不支持Linq to SQL。 DataContext类适用于Linq to SQL,而不是实体框架......

正如地狱之眼所建议的那样,你应该使用实体模型设计师。可以手动创建映射,但这并不容易......

顺便说一句,实体框架没有CreateDatabase方法,因此您无法以这种方式创建数据库(并且无论如何SQLite没有CREATE DATABASE指令)