修改readme

This commit is contained in:
xuejiaming 2021-09-30 10:39:56 +08:00
parent dc88941c3f
commit dd3457e135
3 changed files with 13 additions and 13 deletions

View File

@ -6,9 +6,9 @@
Release | EF Core | .NET Standard | .NET (Core)
--- | --- | --- | ---
[5.x.x.x](https://www.nuget.org/packages/ShardingCore/5.3.0.00) | >= 5.0.10 | 2.1 | 3.0+
[3.x.x.x](https://www.nuget.org/packages/ShardingCore/3.3.0.00) | 3.1.18 | 2.0 | 2.0+
[2.x.x.x](https://www.nuget.org/packages/ShardingCore/2.3.0.00) | 2.2.6 | 2.0 | 2.0+
[5.x.x.x](https://www.nuget.org/packages/ShardingCore) | >= 5.0.10 | 2.1 | 3.0+
[3.x.x.x](https://www.nuget.org/packages/ShardingCore) | 3.1.18 | 2.0 | 2.0+
[2.x.x.x](https://www.nuget.org/packages/ShardingCore) | 2.2.6 | 2.0 | 2.0+
### 数据库支持
数据库 | 是否支持 | 支持情况
--- | --- | ---
@ -578,12 +578,16 @@ var list = new List<SysUserMod>();
```
## 自动追踪
默认shardingcore不支持自动追踪,并且也不建议使用自动追踪,如果你有需要shardingcore也默认提供了自动追踪功能
默认shardingcore不支持单次查询跨表自动追踪,并且也不建议使用自动追踪,如果你有需要shardingcore也默认提供了自动追踪功能
有两点需要注意
目前仅支持单主键对象
1.shardingcore仅支持dbcontext的model的类型的整个查询匿名类型不支持联级查询不支持
2.shardingcore的单个查询依然走数据库不走缓存如果查询出来的结果缓存里面有就返回缓存里面的而不是数据库的
3.tolist等操作会查询数据库返回的时候判断是否已经追踪如果已经追踪则返回缓存里已经追踪了的值
1.如果本次查询不涉及跨表那么支持(跨库也可以)
2.如果设计跨表那么仅支持dbcontext的model的类型的整个查询匿名类型不支持联级查询不支持
3.不跨表的情况下和efcore的自动追踪一样
3.不跨表的情况下tolist等操作会查询数据库返回的时候判断是否已经追踪如果已经追踪则返回缓存里已经追踪了的值
4.支持 `first`,`firstordefault`,`last`,`lastordefault`,`single`,`singleordefault`
如何开启
```c#

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using System.Transactions;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage;
@ -69,7 +70,6 @@ namespace Sample.SqlServer.Controllers
var sresultxc = _defaultTableDbContext.Set<SysUserMod>().Where(o => o.Id == "198").Select(o => o.Id).ToList();
var sresultxasdc = _defaultTableDbContext.Set<SysUserMod>().Where(o => o.Id == "198").ToList();
var sresult = _defaultTableDbContext.Set<SysUserMod>().ToList();
var sysUserMod98 = result.FirstOrDefault(o => o.Id == "98");
sysUserMod98.Name = "name_update" + new Random().Next(1, 99) + "_98";
await _defaultTableDbContext.SaveChangesAsync();

View File

@ -130,10 +130,6 @@ namespace ShardingCore.Sharding
if (!_dbContextCaches.TryGetValue(dataSourceName, out var tailDbContexts))
{
tailDbContexts = new ConcurrentDictionary<string, DbContext>();
if(!_dbContextCaches.TryAdd(dataSourceName, tailDbContexts))
{
_dbContextCaches.TryGetValue(dataSourceName, out tailDbContexts);
}
}
var cacheKey = routeTail.GetRouteTailIdentity();
if (!tailDbContexts.TryGetValue(cacheKey, out var dbContext))