LinqDB 查询数据库
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 查询数据库的更多相关文章
- SQL Server中查询数据库及表的信息语句
/* -- 本文件主要是汇总了 Microsoft SQL Server 中有关数据库与表的相关信息查询语句. -- 下面的查询语句中一般给出两种查询方法, -- A方法访问系统表,适应于SQL 20 ...
- SQL查询数据库中所有指定类型的字段名称和所在的表名
--查询数据库中所有指定类型的字段名称和所在的表名 --eg: 下面查的是当前数据库中 所有字段类型为 nvarchar(max) 的字段名和表名 SELECT cols.object_id , co ...
- MySql 查询数据库中所有表名
查询数据库中所有表名select table_name from information_schema.tables where table_schema='csdb' and table_type= ...
- ArcGIS Javascript查询数据库并添加到地图上
将数据存放到数据库中,动态的调取比较灵活,数据变动后不需要改变图层的属性表. 此处采用的方法是通过jquery查询数据库,并将数据库的结果生产json串返回给js,在js中动态解析json串增加点至地 ...
- 【mysql元数据库】使用information_schema.tables查询数据库和数据表信息
概述 对于mysql和Infobright等数据库,information_schema数据库中的表都是只读的,不能进行更新.删除和插入等操作,也不能加触发器,因为它们实际只是一个视图,不是基本表,没 ...
- SQLSERVER | 查询数据库中所有的表的名字 | 查询数据库中的所有数据库名
SQLSERVER 1.查询某个数据库中所有的表名: SELECT Name FROM SysObjects Where XType='U' ORDER BY Name 2.查询数据库中的所有数据库 ...
- Java 通过JDBC查询数据库表结构(字段名称,类型,长度等)
Java 通过JDBC查询数据库表结构(字段名称,类型,长度等) 发布者:唛唛家的豆子 时间:2012-11-20 17:54:02 Java 通过JDBC查询数据库表结构(字段名称,类型,长 ...
- DBA日常SQL之查询数据库运行状况
,) Day, ,),,)) H00, ,),,)) H01, ,),,)) H02, ,),,)) H03, ,),,)) H04, ,),,)) H05, ,),,)) H06, ,),,)) H ...
- SQL查询数据库是否存在
在实际工作中会遇到通过SQL查询数据库是否存在的情况,下面一些语句可以提供一些帮助,本文的语句是在SQL08R2中测试的 1,查询当前数据库服务器所有数据库 select * From master ...
随机推荐
- IIS+PHP上传文件大小限制和上传时间限制,iis7和iis8上传文件大小限制和上传时间限制
先说IIS这边的配置 一:点击站点“管理”下的“配置编辑器”. 二:设 ...
- ruby方法名之命名方式
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 modify_my_object!,这个方法名是以 ! 结尾,在 ruby 的对象里边是用于表达修改本身的意思. 比如 String#gsub ...
- volatile在外设寄存器基地址定义时的作用
volatile,作用就是告诉编译器不要因优化而省略此指令,必须每次都直接读写其值,这样就能确保每次读或者写寄存器都真正执行到位.——野火
- CSS3(1)---圆角边框、边框阴影
CSS3(1)---圆角边框.边框阴影 CSS3可以简单理解成是CSS的增强版,它的优点在于不仅有利于开发与维护,还能提高网站的性能. 一.圆角边框 圆角在实际开放过程中,还是蛮常见的.以前基本是通过 ...
- [TimLinux] JavaScript 阻止父节点接收子节点事件的方法
1. 事件 两种类型的事件:触发式.冒泡式 2. 冒泡式 触发式:事件从DOM结构的顶层往下走的事件触发过程: 冒泡式:事件从DOM结构的底层往上走的事件触发过程. 3. 父子节点 当父.子节点同时对 ...
- Geoserver2.15.1 配置自带 GeoWebCache 插件发布 ArcGIS Server 瓦片(附配置好的 Geoserver2.15.1 下载)
之前写过一篇关于 Geoserver2.8.5 版本的部署配置发布 ArcGIS Server 瓦片点击查看,那是下载 Geoserver2.8.5 源码编译,重新打包 jar 来部署配置思路的,版本 ...
- hdu1710 Binary Tree Traversals
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1710 题意:给前序.中序求后序,多组 前序:根左右 中序:左右根 分析:因为前序(根左右)最先出现的总 ...
- HDU1846 Brave Game(巴什博弈)
十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻. 今天,大家选择 ...
- 《java面试十八式》--引子
爪哇城中 “喂,你等等我啊”少女气喘吁吁的喊道 “大小姐,你可快点吧,报名马上就要结束了.” 这是爪哇城一年一度的大选比赛,被选上的人会留下来任职,享有名誉和金钱,所以大家都在积极准备. ...
- 制作Win10系统安装U盘和安装纯净版Win10
重要提示 (以下为操作或安装前的必读提示) 1.准备8G或8G以上的U盘(32G以内).制作U盘会格式化U盘,此U盘内的数据需要提前备份至其他U盘或移动硬盘. 2.在格式化.删除分区和重新安装操作系统 ...