Ale*_*lex 5 .net c# 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>(); }
}
}
Run Code Online (Sandbox Code Playgroud)
为了从数据库获取数据,我使用以下代码:
SQLiteConnection connection = new SQLiteConnection("Data Source=db.sqlite; Version=3;");
using (EntityDataContent dataContext = new EntityDataContent(connection))
{
return dataContext.Entities.ToList();
}
Run Code Online (Sandbox Code Playgroud)
它不会工作,因为里面没有数据库和表。所以首先应该创建它们:
using (EntityDataContent dataContext = new EntityDataContent(connectionString))
{
if (!dataContext.DatabaseExists())
{
dataContext.CreateDatabase();
}
}
Run Code Online (Sandbox Code Playgroud)
问题就在这里。此代码抛出 SQLiteException 并显示消息:
SQL logic error or missing database
near "DATABASE": syntax error
Run Code Online (Sandbox Code Playgroud)
都是因为数据库提供者试图借助 来创建数据库CREATE DATABASE
,但 SQLite 中没有这样的操作。文件本身已经是一个数据库。
所以我想我DataContext
使用默认的数据库提供程序而不是相应的 nuget 包提供的 SQLite 实现。我不知道如何解决这个问题以及问题出在哪里。你有什么建议吗?
归档时间: |
|
查看次数: |
992 次 |
最近记录: |