SQLite和LINQ to SQL - DataContext和数据库创建的问题

时间:2015-11-20 19:39:55

标签: c# .net sqlite linq-to-sql

我在C#中编写一个使用SQLite数据库的.NET应用程序。我想使用LINQ to SQL作为ORM以便使用数据库。因此,我的项目中安装了两个nuget包:System.Data.SQLite Core (x86/x64)System.Data.SQLite LINQ

以下是我的应用中的一些简化代码:

[Table]
public class Entity
{
    [Column(IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false)]
    public int Id { get; set; }

    [Column]
    public string Data { get; set; }
}

public class EntityDataContent : DataContext
{
    public EntityDataContent(IDbConnection connection) : base(connection)
    {
    }

    public Table<Entity> Entities
    {
        get { return GetTable<Entity>(); }
    }
}

要从数据库获取数据,我使用以下代码:

SQLiteConnection connection = new SQLiteConnection("Data Source=db.sqlite; Version=3;");
using (EntityDataContent dataContext = new EntityDataContent(connection))
{
    return dataContext.Entities.ToList();
}

它不会起作用,因为它里面没有数据库和表格。所以一开始应该创建它们:

using (EntityDataContent dataContext = new EntityDataContent(connectionString))
{
    if (!dataContext.DatabaseExists())
    {
        dataContext.CreateDatabase();
    }
}

这就是问题所在。此代码抛出带有消息的SQLiteException:

SQL logic error or missing database
near "DATABASE": syntax error

全部是因为数据库提供程序尝试在CREATE DATABASE的帮助下创建数据库,但SQLite中没有此类操作。文件本身就是一个数据库。

所以我认为我的DataContext使用默认数据库提供程序而不是相应的nuget包提供的SQLite实现。我无法弄清楚如何解决这个问题以及可能出现问题的地方。你有什么建议吗?

0 个答案:

没有答案