mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-14 12:20:57 +08:00
update
@@ -39,6 +39,31 @@ public class SongRepository : BaseRepository<Song, int> {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
3、Autofac 注入;
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
public IServiceProvider ConfigureServices(IServiceCollection services) {
|
||||||
|
|
||||||
|
services.AddSingleton<IFreeSql>(fsql);
|
||||||
|
services.AddMvc();
|
||||||
|
|
||||||
|
var builder = new ContainerBuilder();
|
||||||
|
|
||||||
|
builder.RegisterFreeGuidRepository<Song>(null, null);
|
||||||
|
|
||||||
|
builder.Populate(services);
|
||||||
|
var container = builder.Build();
|
||||||
|
|
||||||
|
return new AutofacServiceProvider(container);
|
||||||
|
}
|
||||||
|
|
||||||
|
//在控制器使用
|
||||||
|
public SongsController(GuidRepository<Song> repos1, GuidRepository<xxxx> repos2) {
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
> Autofac 注入方式实现了全局【过滤与验证】、【分表分库】的设定,方便租户功能的设计;
|
||||||
|
|
||||||
## 过滤与验证
|
## 过滤与验证
|
||||||
|
|
||||||
假设我们有User(用户)、Topic(主题)两个实体,在领域类中定义了两个仓储:
|
假设我们有User(用户)、Topic(主题)两个实体,在领域类中定义了两个仓储:
|
||||||
@@ -73,6 +98,8 @@ var logRepository = fsql.GetGuidRepository<Log>(null, oldname => $"{oldname}_{Da
|
|||||||
* 不能使用 CodeFirst 迁移分表,开发环境时仍然可以迁移 Log 表;
|
* 不能使用 CodeFirst 迁移分表,开发环境时仍然可以迁移 Log 表;
|
||||||
* 不可在分表分库的实体类型中使用《延时加载》;
|
* 不可在分表分库的实体类型中使用《延时加载》;
|
||||||
|
|
||||||
|
##
|
||||||
|
|
||||||
## 兼容问题
|
## 兼容问题
|
||||||
|
|
||||||
FreeSql 支持五种数据库,分别为 MySql/SqlServer/PostgreSQL/Oracle/Sqlite,虽然他们都为关系型数据库,但各自有着独特的技术亮点,有许多亮点值得我们使用;
|
FreeSql 支持五种数据库,分别为 MySql/SqlServer/PostgreSQL/Oracle/Sqlite,虽然他们都为关系型数据库,但各自有着独特的技术亮点,有许多亮点值得我们使用;
|
||||||
|
|||||||
17
更新日志.md
17
更新日志.md
@@ -1,20 +1,11 @@
|
|||||||
|
|
||||||
## v0.1.13
|
## v0.1.13
|
||||||
|
|
||||||
- 修改 连接池内部 Ping Timeout 值暂定 1秒;
|
|
||||||
- 优化 初始化时若数据库超时,则放弃预热;
|
|
||||||
- FreeSql.Repository 下增加 ISelect.FromRepository 扩展方法;比如分表实现租户:
|
|
||||||
```csharp
|
|
||||||
var tenantId = 1;
|
|
||||||
var reposTopic = orm.GetGuidRepository<Topic>(null, oldname => $"{oldname}{tenantId}");
|
|
||||||
var reposType = orm.GetGuidRepository<TopicType>(null, oldname => $"{oldname}{tenantId}");
|
|
||||||
|
|
||||||
//联表查询也支持
|
- 修改 连接池内部 Ping Timeout 值暂定 5秒;
|
||||||
reposTopic.Select
|
- 优化 初始化时若数据库超时,则放弃预热;
|
||||||
.FromRepository(reposType) //合并两个仓储的设置
|
- FreeSql.Repository 下增加 ISelect.FromRepository 扩展方法,实现分表的多表查询;
|
||||||
.LeftJoin<TopicType>((a, b) => a.TypeId == b.Id)
|
- 增加 FreeSql.Repository Autofac 泛型注入,可利用实现全局过滤+分表分库;
|
||||||
.ToList();
|
|
||||||
```
|
|
||||||
|
|
||||||
## v0.1.12
|
## v0.1.12
|
||||||
|
|
||||||
|
|||||||
26
租户.md
26
租户.md
@@ -60,6 +60,32 @@ FROM "Topic_1" a
|
|||||||
LEFT JOIN "TopicType_1" b ON a."TypeId" = b."Id"
|
LEFT JOIN "TopicType_1" b ON a."TypeId" = b."Id"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 实现全局控制租户
|
||||||
|
|
||||||
|
FreeSql.Repository Autofac 注入方式实现了全局【过滤与验证】、【分表分库】的设定,方便租户功能的设计;
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
public IServiceProvider ConfigureServices(IServiceCollection services) {
|
||||||
|
|
||||||
|
services.AddSingleton<IFreeSql>(fsql);
|
||||||
|
services.AddMvc();
|
||||||
|
|
||||||
|
var builder = new ContainerBuilder();
|
||||||
|
|
||||||
|
builder.RegisterFreeGuidRepository<Song>(a => a.TenantId == 1, oldname => $"{oldname}_");
|
||||||
|
|
||||||
|
builder.Populate(services);
|
||||||
|
var container = builder.Build();
|
||||||
|
|
||||||
|
return new AutofacServiceProvider(container);
|
||||||
|
}
|
||||||
|
|
||||||
|
//在控制器使用
|
||||||
|
public SongsController(GuidRepository<Song> repos1, GuidRepository<xxxx> repos2) {
|
||||||
|
//repos1, repos2 都会附带注入时的 Filter 与 分表分库规则;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## 参考资料
|
## 参考资料
|
||||||
|
|
||||||
- [《读写分离》](https://github.com/2881099/FreeSql/wiki/%e8%af%bb%e5%86%99%e5%88%86%e7%a6%bb)
|
- [《读写分离》](https://github.com/2881099/FreeSql/wiki/%e8%af%bb%e5%86%99%e5%88%86%e7%a6%bb)
|
||||||
|
|||||||
Reference in New Issue
Block a user