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. DevOps组织中应用架构师的新定位与实践

    [摘要] 针对应用架构师相关窘境,在现代化的应用开发中,DevOps组织需要定义应用架构师职责,使应用架构师与DevOps团队各角色更有效的沟通,交付更有价值的产品.在多数情况下,应用架构师不是Dev ...

  2. 【我的物联网成长记6】由浅入深了解NB-IoT

    [摘要] 什么是NB-IoT?NB-IoT有什么优势?NB-IoT能做什么?本文将会从NB-IoT技术的发展历程,技术特点,通信协议,应用场景等方面为您全方面解读NB-IoT技术,了解NB-IoT的独 ...

  3. Python的Requests库基本方法函数

    一.Requests 库的七个常用函数: 1. requests.request(method,url,**kwargs) :method:请求方式,对应get/put/post等七种 :拟获取页面的 ...

  4. 用Java编程语言对一个无序整形数组进行排序(冒泡排序,选择排序,插入排序)

    public static void main(String[] args) { /** * 冒泡排序 * 思路:每个轮次都让第一个数和其后所有的数进行轮比较,如果这轮的第一个数大则和其下一个数交换位 ...

  5. k8s 开船记-触礁:四涡轮发动机撞坏3个引发502故障

    (图片来自网络) 非常抱歉,这次开船触礁故障给您带来麻烦了,请您谅解. 在我们昨天发布 k8s 开船记首航博文后,有园友在评论中发来贺词——“泰坦尼克号出发了[狗头]”,借此吉言,今天船就触礁了,还好 ...

  6. Codeforces-527c

    Leonid wants to become a glass carver (the person who creates beautiful artworks by cutting the glas ...

  7. HDU-1027Ignatius and princess II

    Now our hero finds the door to the BEelzebub feng5166. He opens the door and finds feng5166 is about ...

  8. Ceph 架构以及原理分析

    一.架构 Ceph在一个统一的系统中独特地提供对象,块和文件存储. Ceph高度可靠,易于管理且免费. Ceph的强大功能可以改变您公司的IT基础架构以及管理大量数据的能力. Ceph提供了非凡的可扩 ...

  9. tensorflow add_to_collection用法

    训练代码: # coding: utf-8 from __future__ import print_function from __future__ import division import t ...

  10. 【Zuul】使用学习

    [Zuul]使用学习 添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <arti ...