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 ...
随机推荐
- css实现input表单验证
有没有办法只通过css来确定input标签是否有输入? 我有这个想法是因为我想完成一个自动补全的input部件,最基本的功能是: 如果input没有内容,这隐藏下拉框 反之,显示下拉框 我找到了一个也 ...
- [TimLinux] openpyxl 操作Excel
from openpyxl import Workbook from openpyxl.styles import Color, PatternFill, Font from openpyxl.sty ...
- HDU5919 Sequence II(主席树)
Mr. Frog has an integer sequence of length n, which can be denoted as a1,a2,⋯,ana1,a2,⋯,anThere are ...
- 首次自动化测试,使用selenium+scapy
痛苦而艰难 才写出这一点点,这是个登陆测试 main # -*- coding: utf-8 -*- from selenium import webdriver import login_tst i ...
- 数学工具(三)scipy中的优化方法
给定一个多维函数,如何求解全局最优? 文章包括: 1.全局最优的求解:暴力方法 2.全局最优的求解:fmin函数 3.凸优化 函数的曲面图 import numpy as np import matp ...
- Python网络爬虫入门实战(爬取最近7天的天气以及最高/最低气温)
_ 前言 本文文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Bo_wen 最近两天学习了一下python,并自己写了一个 ...
- 【React】在React中 JSX 代码如何转成 JS 代码?
一.介绍 写 React 代码的朋友应该都是直接写 JSX 代码,JSX 让我们可以在 JS 中直接写 HTML 代码,可阅读性较高.本章节主要介绍 JSX 通过 babel 转换后会生成什么样式代码 ...
- 【JS】369- 20个常用的JavaScript字符串方法
点击上方"前端自习课"关注,学习起来~ 作者:前端小智 https://segmentfault.com/a/1190000020204425 本文主要介绍一些最常用的JS字符串函 ...
- rails 构建 API
我是来鼓吹使用 Rails 写 API 的. 原文在此: https://labs.kollegorna.se/blog/2015/04/build-an-api-now/ 原文有一个很大的缺陷就是读 ...
- 支持100+业务线、累计发布17万次|宜信容器云的A点与B点(分享实录)
宜信公司从2018年初开始建设容器云,至今,容器云的常用基本功能已经趋于完善,主要包括服务管理.应用商店.Nginx配置.存储管理.CI/CD.权限管理等,支持100+业务线.3500+的容器运行.伴 ...