欢迎光临

木子屋

标题: Linq to SQlite简单示例(DbLinq版)

作者: dnawo

日期: 2019-02-03 10:24 PM

分类: Win编程

内容: 一、准备文件：
■SQLite Administrator：https://sqliteadmin.orbmu2k.de/
■System.Data.SQLite：http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki (下netFx35-binary-bundle-Win32这个版本)
■DbLinq： https://github.com/dblinq/dblinq2007 (本地下载)
说明：DbLinq已不更新，最后一个版本基于.NET Framework 3.5框架开发，经测试只有基于.NET Framework 3.5框架(x86平台)开发的项目才能使用本文方法。
二、Linq to SQlite简单示例
1.使用SQLite Administrator创建sqlite数据库
2.使用DbLinq创建数据上下文类
解压下载的DbLinq和SQLite，将System.Data.SQLite.dll复制到DbLinq文件夹下，在命令行中执行如下命令生成数据上下文类：
复制内容到剪贴板 程序代码DbMetal.exe /database:TestContext /namespace=ConsoleApp1 /code=TestContext.cs /provider=Sqlite /conn="data source=D:\Tools\DbLinq\test.s3db"
说明：database为数据上下文类名，namespace为项目命名空间，code为生成的类文件名。
3.Linq to SQlite使用示例
■项目添加引用SQLite的System.Data.SQLite.dll、 System.Data.SQLite.Linq.dll；
■项目添加引用DbLinq的DbLinq.dll、DbLinq.Sqlite.dll；
■项目添加引用.NET程序集System.Data.Linq；
将上一步生成的TestContext.cs包括到项目中即可使用Linq to SQlite：
复制内容到剪贴板 程序代码using System;
using System.Collections.Generic;
using System.Data.SQLite;
using System.Linq;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
using (TestContext db = new TestContext(new SQLiteConnection(@"data source=D:\Tools\DbLinq\test.s3db")))
{
//Insert
UserTb user1 = new UserTb() { Name = "Jack", Age = 30 };
db.UserTb.InsertOnSubmit(user1);
db.SubmitChanges();
//Update
UserTb user2 = db.UserTb.Where(item => item.ID == user1.ID).First();
user2.Name += "New";
db.SubmitChanges();
//Select
List<UserTb> users = db.UserTb.ToList();
foreach (var item in users)
{
Console.WriteLine("{0},{1}", item.ID, item.Name);
}
//Delete
db.UserTb.DeleteOnSubmit(user2);
db.SubmitChanges(); //允许多个操作一起提交
}
Console.ReadLine();
}
}
}
三、常见问题
错误1：创建数据上下文类出错。DbMetal: 未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。 生成此程序集的运行时比当前加载的运行时新，无法加载此程序集。
解答：System.Data.SQLite使用了netFx40版本，改为netFx35版本即可。
错误2：项目运行出错。System.IO.FileLoadException:“混合模式程序集是针对“v2.0.50727”版的运行时生成的，在没有配置其他信息的情况下，无法在 4.0 运行时中加载该程序集。”
解答：项目框架的版本高于.NET Framework 3.5，改成3.5即可。
错误3：项目运行出错。System.IO.FileNotFoundException:“未能加载文件或程序集“System.Data.SQLite.dll”或它的某一个依赖项。找不到指定的模块。”
解答：System.Data.SQLite版本不是netFx35，改为netFx35版本即可。
错误4：项目运行出错。System.BadImageFormatException:“未能加载文件或程序集“System.Data.SQLite, Version=1.0.109.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139”或它的某一个依赖项。试图加载格式不正确的程序。”
解答：项目运行平台不是x86，改为x86即可。
参考资料
[1].Linq to SQlite的使用：https://blog.csdn.net/ldl22847/article/details/6868365

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.768 ms

返回

标题: Linq to SQlite简单示例(DbLinq版)

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.768 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.800 ms

返回