From 255b50c5b8b74cabc4acf69bf221457aa4131037 Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Thu, 28 Feb 2019 18:03:32 +0800 Subject: [PATCH] update --- Repository.md | 63 +++++++++++++++++++++++++++++++++++++++++++++++ _Sidebar.md | 1 + 修改.md | 1 + 分组聚合查询.md | 1 + 分页查询.md | 1 + 删除.md | 1 + 利用导航属性.md | 1 + 单表查询.md | 1 + 多表查询.md | 1 + 安装.md | 1 + 延时加载.md | 1 + 性能.md | 1 + 查询.md | 1 + 添加.md | 1 + 表达式函数.md | 1 + 贪婪加载.md | 1 + 返回查询的数据.md | 1 + 17 files changed, 79 insertions(+) create mode 100644 Repository.md diff --git a/Repository.md b/Repository.md new file mode 100644 index 0000000..593a80c --- /dev/null +++ b/Repository.md @@ -0,0 +1,63 @@ +FreeSql.Repository 作为扩展,现实了通用仓储层功能。与其他规范标准一样,仓储层也有相应的规范定义。FreeSql.Repository 参考 abp vnext 代码,定义和实现基础的仓储层(CURD),应该算比较通用的方法吧。 + +## 安装 + +> dotnet add package FreeSql.Repository + +## 定义 + +```csharp +var fsql = new FreeSql.FreeSqlBuilder() + .UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=|DataDirectory|\document.db;Pooling=true;Max Pool Size=10") + .UseLogger(loggerFactory.CreateLogger()) + .UseAutoSyncStructure(true) //自动迁移实体的结构到数据库 + .Build(); + +public class Song { + [Column(IsIdentity = true)] + public int Id { get; set; } + public string Title { get; set; } +} +``` + +## 使用方法 + +1、IFreeSql 的扩展方法; + +```csharp +var curd1 = fsq.GetRepository(); +var curd2 = fsq.GetGuidRepository(); +``` + +2、继承现实; + +```csharp +public class SongRepository : BaseRepository { + public SongRepository(IFreeSql fsql) : base(fsql) {} + + //在这里增加 CURD 以外的方法 +} +``` + +## 兼容问题 + +FreeSql 支持五种数据库,分别为 MySql/SqlServer/PostgreSQL/Oracle/Sqlite,虽然他们都为关系型数据库,但各自有着独特的技术亮点,有许多亮点是值得我们使用的; + +比如 SqlServer 提供的 output inserted 特性,在表使用了自增或数据库定义了默认值的时候,使用它可以快速将 insert 的数据返回。这样的功能如此方便,但并不是每个数据库都支持,已经支持的有 SqlServer、PostgreSQL。FreeSql 在 IInsert 接口定义了 ExecuteInserted 接口,针对其他几种数据库,使用该方法会抛出异常。 + +BaseRepository 采用了 ExecuteInserted 执行; +GuidRepository 采用了 ExecuteAffrows 执行(兼容性好); + +当采用了不支持的数据库时(Sqlite/MySql/Oracle),建议如下: + +* 使用 uuid 作为主键(即 Guid); +* 避免使用数据库的默认值功能; +* 仓储层实现请使用 GuidRepository; + +## 参考资料 + +- [《学习FreeSql之一:添加数据》](https://github.com/2881099/FreeSql/wiki/%e6%b7%bb%e5%8a%a0) +- [《学习FreeSql之二:删除数据》](https://github.com/2881099/FreeSql/wiki/%e5%88%a0%e9%99%a4) +- [《学习FreeSql之三:修改数据》](https://github.com/2881099/FreeSql/wiki/%e4%bf%ae%e6%94%b9) +- [《学习FreeSql之四:查询数据》](https://github.com/2881099/FreeSql/wiki/%e6%9f%a5%e8%af%a2) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) \ No newline at end of file diff --git a/_Sidebar.md b/_Sidebar.md index 723bf00..d725b0f 100644 --- a/_Sidebar.md +++ b/_Sidebar.md @@ -22,6 +22,7 @@ * [缓存](https://github.com/2881099/FreeSql/wiki/%e7%bc%93%e5%ad%98) * [延时加载](https://github.com/2881099/FreeSql/wiki/%e5%bb%b6%e6%97%b6%e5%8a%a0%e8%bd%bd) * [贪婪加载](https://github.com/2881099/FreeSql/wiki/%e8%b4%aa%e5%a9%aa%e5%8a%a0%e8%bd%bd) + * [Repository](https://github.com/2881099/FreeSql/wiki/Repository) * [CodeFirst](https://github.com/2881099/FreeSql/wiki/CodeFirst) * [实体特性](https://github.com/2881099/FreeSql/wiki/CodeFirst#%e5%ae%9e%e4%bd%93%e7%89%b9%e6%80%a7) * [外部配置实体](https://github.com/2881099/FreeSql/wiki/CodeFirst#%e5%a4%96%e9%83%a8%e9%85%8d%e7%bd%ae%e5%ae%9e%e4%bd%93) diff --git a/修改.md b/修改.md index feec244..5ac9afd 100644 --- a/修改.md +++ b/修改.md @@ -121,6 +121,7 @@ var t10 = update.SetRaw("Title = {0}", "新标题").Where("Id = {0}", 1).ToSql() - [《学习FreeSql之一:添加数据》](https://github.com/2881099/FreeSql/wiki/%e6%b7%bb%e5%8a%a0) - [《学习FreeSql之二:删除数据》](https://github.com/2881099/FreeSql/wiki/%e5%88%a0%e9%99%a4) - [《学习FreeSql之三:查询数据》](https://github.com/2881099/FreeSql/wiki/%e6%9f%a5%e8%af%a2) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) # API diff --git a/分组聚合查询.md b/分组聚合查询.md index c3b626c..4b7e64b 100644 --- a/分组聚合查询.md +++ b/分组聚合查询.md @@ -54,6 +54,7 @@ var groupby = fsql.Select() - [《多表查询》](https://github.com/2881099/FreeSql/wiki/%e5%a4%9a%e8%a1%a8%e6%9f%a5%e8%af%a2) - [《利用导航属性查询》](https://github.com/2881099/FreeSql/wiki/%e5%88%a9%e7%94%a8%e5%af%bc%e8%88%aa%e5%b1%9e%e6%80%a7) - [《获取查询返回的数据》](https://github.com/2881099/FreeSql/wiki/%e8%bf%94%e5%9b%9e%e6%9f%a5%e8%af%a2%e7%9a%84%e6%95%b0%e6%8d%ae) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) - [《优化之:延时加载》](https://github.com/2881099/FreeSql/wiki/%e5%bb%b6%e6%97%b6%e5%8a%a0%e8%bd%bd) - [《优化之:贪婪加载》](https://github.com/2881099/FreeSql/wiki/%e8%b4%aa%e5%a9%aa%e5%8a%a0%e8%bd%bd) - [《Expression 表达式函数》](https://github.com/2881099/FreeSql/wiki/%e8%a1%a8%e8%be%be%e5%bc%8f%e5%87%bd%e6%95%b0) diff --git a/分页查询.md b/分页查询.md index b2bb5d2..26080d1 100644 --- a/分页查询.md +++ b/分页查询.md @@ -47,6 +47,7 @@ var sql = select.Page(1, 20).ToSql(); - [《多表查询》](https://github.com/2881099/FreeSql/wiki/%e5%a4%9a%e8%a1%a8%e6%9f%a5%e8%af%a2) - [《利用导航属性查询》](https://github.com/2881099/FreeSql/wiki/%e5%88%a9%e7%94%a8%e5%af%bc%e8%88%aa%e5%b1%9e%e6%80%a7) - [《获取查询返回的数据》](https://github.com/2881099/FreeSql/wiki/%e8%bf%94%e5%9b%9e%e6%9f%a5%e8%af%a2%e7%9a%84%e6%95%b0%e6%8d%ae) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) - [《优化之:延时加载》](https://github.com/2881099/FreeSql/wiki/%e5%bb%b6%e6%97%b6%e5%8a%a0%e8%bd%bd) - [《优化之:贪婪加载》](https://github.com/2881099/FreeSql/wiki/%e8%b4%aa%e5%a9%aa%e5%8a%a0%e8%bd%bd) - [《Expression 表达式函数》](https://github.com/2881099/FreeSql/wiki/%e8%a1%a8%e8%be%be%e5%bc%8f%e5%87%bd%e6%95%b0) diff --git a/删除.md b/删除.md index ad5bb33..89160c2 100644 --- a/删除.md +++ b/删除.md @@ -71,6 +71,7 @@ var t8 = fsql.Delete().Where(items).ToSql(); - [《学习FreeSql之一:添加数据》](https://github.com/2881099/FreeSql/wiki/%e6%b7%bb%e5%8a%a0) - [《学习FreeSql之二:修改数据》](https://github.com/2881099/FreeSql/wiki/%e4%bf%ae%e6%94%b9) - [《学习FreeSql之三:查询数据》](https://github.com/2881099/FreeSql/wiki/%e6%9f%a5%e8%af%a2) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) ## API diff --git a/利用导航属性.md b/利用导航属性.md index b4393c3..72ca2f3 100644 --- a/利用导航属性.md +++ b/利用导航属性.md @@ -60,6 +60,7 @@ sql = select.Where(a => a.Type.Parent.Name == "tparent").ToSql(); - [《多表查询》](https://github.com/2881099/FreeSql/wiki/%e5%a4%9a%e8%a1%a8%e6%9f%a5%e8%af%a2) - [《获取查询返回的数据》](https://github.com/2881099/FreeSql/wiki/%e8%bf%94%e5%9b%9e%e6%9f%a5%e8%af%a2%e7%9a%84%e6%95%b0%e6%8d%ae) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) - [《优化之:延时加载》](https://github.com/2881099/FreeSql/wiki/%e5%bb%b6%e6%97%b6%e5%8a%a0%e8%bd%bd) - [《优化之:贪婪加载》](https://github.com/2881099/FreeSql/wiki/%e8%b4%aa%e5%a9%aa%e5%8a%a0%e8%bd%bd) - [《Expression 表达式函数》](https://github.com/2881099/FreeSql/wiki/%e8%a1%a8%e8%be%be%e5%bc%8f%e5%87%bd%e6%95%b0) diff --git a/单表查询.md b/单表查询.md index c0593cb..cdc3ac8 100644 --- a/单表查询.md +++ b/单表查询.md @@ -39,6 +39,7 @@ sql = select.Where(a => new []{1,2,3}.Contains(a.Id)).ToSql(); - [《多表查询》](https://github.com/2881099/FreeSql/wiki/%e5%a4%9a%e8%a1%a8%e6%9f%a5%e8%af%a2) - [《利用导航属性查询》](https://github.com/2881099/FreeSql/wiki/%e5%88%a9%e7%94%a8%e5%af%bc%e8%88%aa%e5%b1%9e%e6%80%a7) - [《获取查询返回的数据》](https://github.com/2881099/FreeSql/wiki/%e8%bf%94%e5%9b%9e%e6%9f%a5%e8%af%a2%e7%9a%84%e6%95%b0%e6%8d%ae) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) - [《优化之:延时加载》](https://github.com/2881099/FreeSql/wiki/%e5%bb%b6%e6%97%b6%e5%8a%a0%e8%bd%bd) - [《优化之:贪婪加载》](https://github.com/2881099/FreeSql/wiki/%e8%b4%aa%e5%a9%aa%e5%8a%a0%e8%bd%bd) - [《Expression 表达式函数》](https://github.com/2881099/FreeSql/wiki/%e8%a1%a8%e8%be%be%e5%bc%8f%e5%87%bd%e6%95%b0) diff --git a/多表查询.md b/多表查询.md index 31b20fd..2ddf898 100644 --- a/多表查询.md +++ b/多表查询.md @@ -145,6 +145,7 @@ sql2222 = select.Where(a => - [《利用导航属性查询》](https://github.com/2881099/FreeSql/wiki/%e5%88%a9%e7%94%a8%e5%af%bc%e8%88%aa%e5%b1%9e%e6%80%a7) - [《获取查询返回的数据》](https://github.com/2881099/FreeSql/wiki/%e8%bf%94%e5%9b%9e%e6%9f%a5%e8%af%a2%e7%9a%84%e6%95%b0%e6%8d%ae) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) - [《优化之:延时加载》](https://github.com/2881099/FreeSql/wiki/%e5%bb%b6%e6%97%b6%e5%8a%a0%e8%bd%bd) - [《优化之:贪婪加载》](https://github.com/2881099/FreeSql/wiki/%e8%b4%aa%e5%a9%aa%e5%8a%a0%e8%bd%bd) - [《Expression 表达式函数》](https://github.com/2881099/FreeSql/wiki/%e8%a1%a8%e8%be%be%e5%bc%8f%e5%87%bd%e6%95%b0) diff --git a/安装.md b/安装.md index 42aa0b1..f38ef32 100644 --- a/安装.md +++ b/安装.md @@ -18,6 +18,7 @@ FreeSql 除了支持基本的增删查改功能外,还支持基于现有数据 - [《学习FreeSql之二:删除数据》](https://github.com/2881099/FreeSql/wiki/%e5%88%a0%e9%99%a4) - [《学习FreeSql之三:修改数据》](https://github.com/2881099/FreeSql/wiki/%e4%bf%ae%e6%94%b9) - [《学习FreeSql之四:查询数据》](https://github.com/2881099/FreeSql/wiki/%e6%9f%a5%e8%af%a2) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) #### 进阶 diff --git a/延时加载.md b/延时加载.md index 74b8f00..578fa92 100644 --- a/延时加载.md +++ b/延时加载.md @@ -120,6 +120,7 @@ limit 0,1)) - [《多表查询》](https://github.com/2881099/FreeSql/wiki/%e5%a4%9a%e8%a1%a8%e6%9f%a5%e8%af%a2) - [《利用导航属性查询》](https://github.com/2881099/FreeSql/wiki/%e5%88%a9%e7%94%a8%e5%af%bc%e8%88%aa%e5%b1%9e%e6%80%a7) - [《获取查询返回的数据》](https://github.com/2881099/FreeSql/wiki/%e8%bf%94%e5%9b%9e%e6%9f%a5%e8%af%a2%e7%9a%84%e6%95%b0%e6%8d%ae) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) - [《优化之:延时加载》](https://github.com/2881099/FreeSql/wiki/%e5%bb%b6%e6%97%b6%e5%8a%a0%e8%bd%bd) - [《优化之:贪婪加载》](https://github.com/2881099/FreeSql/wiki/%e8%b4%aa%e5%a9%aa%e5%8a%a0%e8%bd%bd) - [《Expression 表达式函数》](https://github.com/2881099/FreeSql/wiki/%e8%a1%a8%e8%be%be%e5%bc%8f%e5%87%bd%e6%95%b0) diff --git a/性能.md b/性能.md index 141ba56..d46b6b4 100644 --- a/性能.md +++ b/性能.md @@ -134,6 +134,7 @@ public void QueryList() { - [《使用读写分离》](https://github.com/2881099/FreeSql/wiki/%e8%af%bb%e5%86%99%e5%88%86%e7%a6%bb) - [《利用导航属性查询》](https://github.com/2881099/FreeSql/wiki/%e5%88%a9%e7%94%a8%e5%af%bc%e8%88%aa%e5%b1%9e%e6%80%a7) - [《获取查询返回的数据》](https://github.com/2881099/FreeSql/wiki/%e8%bf%94%e5%9b%9e%e6%9f%a5%e8%af%a2%e7%9a%84%e6%95%b0%e6%8d%ae) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) - [《优化之:缓存之路》](https://github.com/2881099/FreeSql/wiki/%e7%bc%93%e5%ad%98) - [《优化之:延时加载》](https://github.com/2881099/FreeSql/wiki/%e5%bb%b6%e6%97%b6%e5%8a%a0%e8%bd%bd) - [《优化之:贪婪加载》](https://github.com/2881099/FreeSql/wiki/%e8%b4%aa%e5%a9%aa%e5%8a%a0%e8%bd%bd) diff --git a/查询.md b/查询.md index e410234..b34534c 100644 --- a/查询.md +++ b/查询.md @@ -6,6 +6,7 @@ FreeSql在查询数据下足了功能,链式查询语法、多表查询、表 - [《利用导航属性查询》](https://github.com/2881099/FreeSql/wiki/%e5%88%a9%e7%94%a8%e5%af%bc%e8%88%aa%e5%b1%9e%e6%80%a7) - [《分组聚合查询》](https://github.com/2881099/FreeSql/wiki/%e5%88%86%e7%bb%84%e8%81%9a%e5%90%88%e6%9f%a5%e8%af%a2) - [《获取查询返回的数据》](https://github.com/2881099/FreeSql/wiki/%e8%bf%94%e5%9b%9e%e6%9f%a5%e8%af%a2%e7%9a%84%e6%95%b0%e6%8d%ae) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) - [《优化之:缓存之路》](https://github.com/2881099/FreeSql/wiki/%e7%bc%93%e5%ad%98) - [《优化之:延时加载》](https://github.com/2881099/FreeSql/wiki/%e5%bb%b6%e6%97%b6%e5%8a%a0%e8%bd%bd) - [《优化之:贪婪加载》](https://github.com/2881099/FreeSql/wiki/%e8%b4%aa%e5%a9%aa%e5%8a%a0%e8%bd%bd) diff --git a/添加.md b/添加.md index 3b06434..a50f733 100644 --- a/添加.md +++ b/添加.md @@ -75,6 +75,7 @@ var t6 = insert.AppendData(items).IgnoreColumns(a => new { a.Title, a.CreateTime - [《学习FreeSql之一:删除数据》](https://github.com/2881099/FreeSql/wiki/%e5%88%a0%e9%99%a4) - [《学习FreeSql之二:修改数据》](https://github.com/2881099/FreeSql/wiki/%e4%bf%ae%e6%94%b9) - [《学习FreeSql之三:查询数据》](https://github.com/2881099/FreeSql/wiki/%e6%9f%a5%e8%af%a2) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) ## API diff --git a/表达式函数.md b/表达式函数.md index cfc71f1..b512616 100644 --- a/表达式函数.md +++ b/表达式函数.md @@ -226,6 +226,7 @@ var t2 = select.Where(a => a.CreateTime.Date == DateTime.Now.Date).ToSql(); - [《多表查询》](https://github.com/2881099/FreeSql/wiki/%e5%a4%9a%e8%a1%a8%e6%9f%a5%e8%af%a2) - [《利用导航属性查询》](https://github.com/2881099/FreeSql/wiki/%e5%88%a9%e7%94%a8%e5%af%bc%e8%88%aa%e5%b1%9e%e6%80%a7) - [《获取查询返回的数据》](https://github.com/2881099/FreeSql/wiki/%e8%bf%94%e5%9b%9e%e6%9f%a5%e8%af%a2%e7%9a%84%e6%95%b0%e6%8d%ae) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) - [《优化之:延时加载》](https://github.com/2881099/FreeSql/wiki/%e5%bb%b6%e6%97%b6%e5%8a%a0%e8%bd%bd) - [《优化之:贪婪加载》](https://github.com/2881099/FreeSql/wiki/%e8%b4%aa%e5%a9%aa%e5%8a%a0%e8%bd%bd) - [《Expression 表达式函数》](https://github.com/2881099/FreeSql/wiki/%e8%a1%a8%e8%be%be%e5%bc%8f%e5%87%bd%e6%95%b0) diff --git a/贪婪加载.md b/贪婪加载.md index 7a576cb..2c52062 100644 --- a/贪婪加载.md +++ b/贪婪加载.md @@ -70,6 +70,7 @@ FreeSql 只现实了非常简单可靠的贪婪加载数据的方式,更精准 - [《多表查询》](https://github.com/2881099/FreeSql/wiki/%e5%a4%9a%e8%a1%a8%e6%9f%a5%e8%af%a2) - [《利用导航属性查询》](https://github.com/2881099/FreeSql/wiki/%e5%88%a9%e7%94%a8%e5%af%bc%e8%88%aa%e5%b1%9e%e6%80%a7) - [《获取查询返回的数据》](https://github.com/2881099/FreeSql/wiki/%e8%bf%94%e5%9b%9e%e6%9f%a5%e8%af%a2%e7%9a%84%e6%95%b0%e6%8d%ae) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) - [《优化之:延时加载》](https://github.com/2881099/FreeSql/wiki/%e5%bb%b6%e6%97%b6%e5%8a%a0%e8%bd%bd) - [《优化之:贪婪加载》](https://github.com/2881099/FreeSql/wiki/%e8%b4%aa%e5%a9%aa%e5%8a%a0%e8%bd%bd) - [《Expression 表达式函数》](https://github.com/2881099/FreeSql/wiki/%e8%a1%a8%e8%be%be%e5%bc%8f%e5%87%bd%e6%95%b0) diff --git a/返回查询的数据.md b/返回查询的数据.md index 6df75d3..0842112 100644 --- a/返回查询的数据.md +++ b/返回查询的数据.md @@ -124,6 +124,7 @@ List t9 = fsql.Ado.Query("select * from song"); - [《多表查询》](https://github.com/2881099/FreeSql/wiki/%e5%a4%9a%e8%a1%a8%e6%9f%a5%e8%af%a2) - [《利用导航属性查询》](https://github.com/2881099/FreeSql/wiki/%e5%88%a9%e7%94%a8%e5%af%bc%e8%88%aa%e5%b1%9e%e6%80%a7) - [《获取查询返回的数据》](https://github.com/2881099/FreeSql/wiki/%e8%bf%94%e5%9b%9e%e6%9f%a5%e8%af%a2%e7%9a%84%e6%95%b0%e6%8d%ae) +- [《仓储层Repository》](https://github.com/2881099/FreeSql/wiki/Repository) - [《优化之:延时加载》](https://github.com/2881099/FreeSql/wiki/%e5%bb%b6%e6%97%b6%e5%8a%a0%e8%bd%bd) - [《优化之:贪婪加载》](https://github.com/2881099/FreeSql/wiki/%e8%b4%aa%e5%a9%aa%e5%8a%a0%e8%bd%bd) - [《Expression 表达式函数》](https://github.com/2881099/FreeSql/wiki/%e8%a1%a8%e8%be%be%e5%bc%8f%e5%87%bd%e6%95%b0)