LinqDB数据库查询数据,还是很方便的。

1. 添加Entity数据实体类

方便之后映射操作

     /// <summary>
/// 课件
/// </summary>
[DataContract]
[Table("Courseware")]
public class CoursewareInfo
{
[DataMember(Name = "LocalId")]
[PrimaryKey, Column("LocalId"), NotNull]
public string LocalId { get; set; } [DataMember(Name = "RemoteId")]
[Column("RemoteId")]
public string RemoteId { get; set; } [Column("Name")]
public string Name { get; set; }
}

2. 添加DB操作通用类

     public class DbProvider<TDB> where TDB : LinqToDB.Data.DataConnection, new()
{
private readonly string _connectionString;
private readonly Func<string> _getConnectionStringFunc; private string ConnectionString
=> string.IsNullOrEmpty(_connectionString) ? _getConnectionStringFunc() : _connectionString; public DbProvider(Func<string> getConnectionStringFunc)
{
_getConnectionStringFunc = getConnectionStringFunc;
}
public TReturn Execute<TReturn>(Func<TDB, TReturn> execute)
{
TDB db = null;
try
{
db = (TDB)Activator.CreateInstance(typeof(TDB), new SQLiteDataProvider(), ConnectionString);
return execute(db);
}
catch (Exception ex)
{
return default(TReturn);
}
finally
{
db?.Dispose();
}
}
}

3. 添加指定数据库的映射连接类

     public partial class CoursewareInfoDb : DataConnection
{
public ITable<CoursewareInfo> Coursewares => GetTable<CoursewareInfo>(); public CoursewareInfoDb()
{
InitDataContext();
} public CoursewareInfoDb(string configuration)
: base(configuration)
{
InitDataContext();
} public CoursewareInfoDb(IDataProvider dataProvider, string connectionString)
: base(dataProvider, connectionString)
{
InitDataContext();
} partial void InitDataContext();
}

4. 添加数据库查询辅助类

这里是将数据库放在程序启动目录下,通过绝对路径引用。

     public class CoursewareSqliteDataReader
{
private static readonly string DbName = "CoursewareCacheData.db";
private readonly DbProvider<CoursewareInfoDb> _coursewareDbProvider; public CoursewareSqliteDataReader()
{
var dbPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Dbs\\{DbName}"); if (!File.Exists(dbPath))
{
throw new InvalidOperationException("路径下不存在数据库文件");
}
_coursewareDbProvider = new DbProvider<CoursewareInfoDb>(() => $"Data Source={dbPath}");
} public List<CoursewareInfo> GetCoursewares()
{
return _coursewareDbProvider.Execute(db => db.Coursewares.ToList());
}
public List<CoursewareInfo> GetCoursewares(string queryText)
{
return _coursewareDbProvider.Execute(db => db.Coursewares.Where(i=>i.Name.Contains(queryText)).ToList());
}
}

LinqDB 查询数据库的更多相关文章

  1. SQL Server中查询数据库及表的信息语句

    /* -- 本文件主要是汇总了 Microsoft SQL Server 中有关数据库与表的相关信息查询语句. -- 下面的查询语句中一般给出两种查询方法, -- A方法访问系统表,适应于SQL 20 ...

  2. SQL查询数据库中所有指定类型的字段名称和所在的表名

    --查询数据库中所有指定类型的字段名称和所在的表名 --eg: 下面查的是当前数据库中 所有字段类型为 nvarchar(max) 的字段名和表名 SELECT cols.object_id , co ...

  3. MySql 查询数据库中所有表名

    查询数据库中所有表名select table_name from information_schema.tables where table_schema='csdb' and table_type= ...

  4. ArcGIS Javascript查询数据库并添加到地图上

    将数据存放到数据库中,动态的调取比较灵活,数据变动后不需要改变图层的属性表. 此处采用的方法是通过jquery查询数据库,并将数据库的结果生产json串返回给js,在js中动态解析json串增加点至地 ...

  5. 【mysql元数据库】使用information_schema.tables查询数据库和数据表信息

    概述 对于mysql和Infobright等数据库,information_schema数据库中的表都是只读的,不能进行更新.删除和插入等操作,也不能加触发器,因为它们实际只是一个视图,不是基本表,没 ...

  6. SQLSERVER | 查询数据库中所有的表的名字 | 查询数据库中的所有数据库名

    SQLSERVER 1.查询某个数据库中所有的表名:  SELECT Name FROM SysObjects Where XType='U' ORDER BY Name 2.查询数据库中的所有数据库 ...

  7. Java 通过JDBC查询数据库表结构(字段名称,类型,长度等)

    Java 通过JDBC查询数据库表结构(字段名称,类型,长度等) 发布者:唛唛家的豆子   时间:2012-11-20 17:54:02   Java 通过JDBC查询数据库表结构(字段名称,类型,长 ...

  8. DBA日常SQL之查询数据库运行状况

    ,) Day, ,),,)) H00, ,),,)) H01, ,),,)) H02, ,),,)) H03, ,),,)) H04, ,),,)) H05, ,),,)) H06, ,),,)) H ...

  9. SQL查询数据库是否存在

    在实际工作中会遇到通过SQL查询数据库是否存在的情况,下面一些语句可以提供一些帮助,本文的语句是在SQL08R2中测试的 1,查询当前数据库服务器所有数据库 select *  From master ...

随机推荐

  1. WebGPU学习(四):Alpha To Coverage

    大家好,本文学习与MSAA相关的Alpha To Coverage以及在WebGPU中的实现. 上一篇博文 WebGPU学习(三):MSAA 学习Alpha To Coverage 前置知识 WebG ...

  2. Vue3.0常用代码片段和开发插件

    Vue3 Snippets for Visual Studio Code Vue3 Snippets源码 Vue3 Snippets下载 This extension adds Vue3 Code S ...

  3. java前端与后端怎么选??

    想做这个行业,就应该了解职能以及技能需求,这样学习才能更高效.我知道一些刚刚入行的小伙伴不清楚前端.后端.到底指的是什么?两者直接的区别 前端开发 前端开发主要涉及网站和App,用户能够从浏览器上或A ...

  4. 华为鲁勇:5G+云+AI三大核心引擎将驱动广州数字经济发展

    [摘要] 华为云将携手广州政企,全面释放 5G+云+AI新动能,推动广州步入高质量发展新阶段. [中国,广州] 广州是一座多样化的城市,在历史上被誉为千年的商都,现在,广州也在持续的开放.融合.与时俱 ...

  5. 一、Java基础篇

    1.简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java 平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出 ...

  6. Python 报错集合

    1.django_error:HINT: Add or change a related_name argument to the definition for...报错, 详情见: https:// ...

  7. luogu P2272 [ZJOI2007]最大半连通子图

    题目描述 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u的有向路径.若 ...

  8. UIContainerView纯代码实现及原理介绍

    UIContainerView纯代码实现及原理介绍 1.1-在StoryBoard中使用UIContainerView 1.2-纯代码使用UIContainerView 1.3-UIContainer ...

  9. JsonModel的使用

    本人最近在开发一款医疗类的APP 发现接口返回的数据很复杂 手动解析的话对新手来说就是一场灾难 在分解成所需要的model类型时工作量非常的大,于是从网上查阅相关资料,发现JsonModel这个第三方 ...

  10. Node.js 中 __dirname 和 ./ 的区别

    概要 __dirname 总是指向被执行 js 文件的绝对路径 在 /d1/d2/myscript.js 文件中写了 __dirname, 它的值就是 /d1/d2 . ./ 会返回你执行 node ...