LinqDB 查询数据库
程序员文章站
2022-09-27 21:36:10
LinqDB数据库查询数据,还是很方便的。 1. 添加Entity数据实体类 方便之后映射操作 2. 添加DB操作通用类 3. 添加指定数据库的映射连接类 4. 添加数据库查询辅助类 这里是将数据库放在程序启动目录下,通过绝对路径引用。 ......
linqdb数据库查询数据,还是很方便的。
1. 添加entity数据实体类
方便之后映射操作
1 /// <summary> 2 /// 课件 3 /// </summary> 4 [datacontract] 5 [table("courseware")] 6 public class coursewareinfo 7 { 8 [datamember(name = "localid")] 9 [primarykey, column("localid"), notnull] 10 public string localid { get; set; } 11 12 [datamember(name = "remoteid")] 13 [column("remoteid")] 14 public string remoteid { get; set; } 15 16 [column("name")] 17 public string name { get; set; } 18 }
2. 添加db操作通用类
1 public class dbprovider<tdb> where tdb : linqtodb.data.dataconnection, new() 2 { 3 private readonly string _connectionstring; 4 private readonly func<string> _getconnectionstringfunc; 5 6 private string connectionstring 7 => string.isnullorempty(_connectionstring) ? _getconnectionstringfunc() : _connectionstring; 8 9 public dbprovider(func<string> getconnectionstringfunc) 10 { 11 _getconnectionstringfunc = getconnectionstringfunc; 12 } 13 public treturn execute<treturn>(func<tdb, treturn> execute) 14 { 15 tdb db = null; 16 try 17 { 18 db = (tdb)activator.createinstance(typeof(tdb), new sqlitedataprovider(), connectionstring); 19 return execute(db); 20 } 21 catch (exception ex) 22 { 23 return default(treturn); 24 } 25 finally 26 { 27 db?.dispose(); 28 } 29 } 30 }
3. 添加指定数据库的映射连接类
1 public partial class coursewareinfodb : dataconnection 2 { 3 public itable<coursewareinfo> coursewares => gettable<coursewareinfo>(); 4 5 public coursewareinfodb() 6 { 7 initdatacontext(); 8 } 9 10 public coursewareinfodb(string configuration) 11 : base(configuration) 12 { 13 initdatacontext(); 14 } 15 16 public coursewareinfodb(idataprovider dataprovider, string connectionstring) 17 : base(dataprovider, connectionstring) 18 { 19 initdatacontext(); 20 } 21 22 partial void initdatacontext(); 23 }
4. 添加数据库查询辅助类
这里是将数据库放在程序启动目录下,通过绝对路径引用。
1 public class coursewaresqlitedatareader 2 { 3 private static readonly string dbname = "coursewarecachedata.db"; 4 private readonly dbprovider<coursewareinfodb> _coursewaredbprovider; 5 6 public coursewaresqlitedatareader() 7 { 8 var dbpath = path.combine(appdomain.currentdomain.basedirectory, $"dbs\\{dbname}"); 9 10 if (!file.exists(dbpath)) 11 { 12 throw new invalidoperationexception("路径下不存在数据库文件"); 13 } 14 _coursewaredbprovider = new dbprovider<coursewareinfodb>(() => $"data source={dbpath}"); 15 } 16 17 public list<coursewareinfo> getcoursewares() 18 { 19 return _coursewaredbprovider.execute(db => db.coursewares.tolist()); 20 } 21 public list<coursewareinfo> getcoursewares(string querytext) 22 { 23 return _coursewaredbprovider.execute(db => db.coursewares.where(i=>i.name.contains(querytext)).tolist()); 24 } 25 }
推荐阅读
-
lights.exe是什么进程 有什么用 lights进程查询
-
Android批量插入数据到SQLite数据库的方法
-
lorena.exe是什么进程 有什么用 lorena进程查询
-
launchpd.exe是什么进程 有什么用 launchpd进程查询
-
LimeWire.exe进程文件介绍 LimeWire进程查询
-
lexstart.exe是什么进程 lexstart进程查询
-
launchap.exe是什么进程 有什么用 launchap进程查询
-
logitray.exe进程是什么文件 logitray进程查询
-
kodorjan.exe进程有什么用 是什么进程 kodorjan进程查询
-
load32.exe是什么进程 有什么用 load32进程查询