Linq to SQlite简单示例(DbLinq版)

一、准备文件:

■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 | 引用: 0 | 查看次数: 2848
发表评论
登录后再发表评论!