Identity – 冷知识
RoleManager, RoleStore, EF Core 关系
RoleManager 可以理解为一个上层 service, 是让我们操作 Role 的. 比如 create, update, delete 等.
RoleStore 可以理解为一个 repository, 默认情况下, 它内部是使用 EF Core 来做 Persistence.
如果我们不想使用 EF Core 的话也可以自己实现一个 IRoleStore 读写数据库

另外如果想使用 RoleManager.Roles 直接操作 IQueryable 的话. RoleStore 必须实现 IQueryableRoeStore 接口

对于 build-in 的 EF Core, 要实现 IQueryable 自然是很容易的.

RoleManager 如何做 transaction
有时候, 想批量创建或删除 Roles. 这就需要用到 transaction 确保原子性.
Manager.Create -> Store.Create -> DbContext.SaveChanges

transaction 在 DBContext 里, Manager 的 Store 是 protected 的, 即便它是 public, 它也只是一个 IRoleStore

而 IRoleStore 完全没有获取到 DbContext 的方法.

所以从这里可以确定, Identity 不支持 transaction 概念.
那怎么办?
如果不 care 管理的话, 可以直接在应用层调用 DbContext. 因为"我们知道“它们是一样的.

但如果 "我们不知道" 的话. 那用 TransactionScope 会解耦一些.

但我觉得这些都只是 workaround, 毕竟 Identity 不是应该要支持 transaction 的吗?
Identity – 冷知识的更多相关文章
- 前端不为人知的一面--前端冷知识集锦 前端已经被玩儿坏了!像console.log()可以向控制台输出图片
前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前 ...
- 前端不为人知的一面–前端冷知识集锦 原文地址(http://web.jobbole.com/83473/);
前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前 ...
- .Net冷知识之动态查找类型时的程序集路径问题
今天就说说.Net中通过反射取得某个类型时,我们怎么知道这个类型在硬盘上的哪个角落?比如说,假如我们需要要求服务端动态载入某个数据源,那服务端怎么知道数据源在哪? 网上大部分的教程都写着,可以使用As ...
- 转:前端冷知识(~~some fun , some useful)
前端不为人知的一面——前端冷知识集锦 前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Qu ...
- 盘点 Python 中的那些冷知识(二)
上一篇文章分享了 Python中的那些冷知识,地址在这里 盘点 Python 中的那些冷知识(一) 今天将接着分享!! 06. 默认参数最好不为可变对象 函数的参数分三种 可变参数 默认参数 关键字参 ...
- web 前端冷知识
前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前 ...
- python 冷知识(装13 指南)
python 冷知识(装13 指南) list1 += list2 和 list1 = list1 + list2 的区别 alpha = [1, 2, 3] beta = alpha # alpha ...
- Python 浮点数的冷知识
本周的PyCoder's Weekly 上分享了一篇小文章,它里面提到的冷知识很有意思,我稍作补充,分享给大家. 它提到的部分问题,读者们可以先思考下: 若两个元组相等,即 a==b 且 a is b ...
- 10个不为人知的 Python 冷知识
转载: 1. 省略号也是对象 ...这是省略号,在Python中,一切皆对象.它也不例外. 在 Python 中,它叫做 Ellipsis . 在 Python 3 中你可以直接写…来得到这玩意. 而 ...
- python冷知识(续)
python 冷知识 1.交互式中修改最大递归深度 大家都知道使用递归是有风险的,递归深度过深容易导致堆栈的溢出. 那到底,默认递归次数限制是多少呢? 可以使用sys这个库来查看 >>&g ...
随机推荐
- [oeasy]python0068_ 字体样式_正常_加亮_变暗_控制序列
字体样式 回忆上次内容 上次了解了一个新的转义模式 \33 逃逸控制字符 esc esc 让输出 退出标准输出流 进行控制信息的设置 可以清屏 也可以设置光标输出的位置 还能做什么呢? 可以设置字符的 ...
- 题解:AT_abc359_e [ABC359E] Water Tank
背景 中考结束了,但是暑假只有一天,这就是我现在能在机房里面写题解的原因-- 分析 这道题就是个单调栈. 题目上问你第一滴水流到每个位置的时间.我们考虑,答案其实就是比当前木板高且距离当前木板最近的那 ...
- Pandas库学习笔记(6) -- Pandas 基本方法
Pandas 基本方法实例 到目前为止,我们了解了三个Pandas DataStructures以及如何创建它们.由于它在实时数据处理中的重要性,因此我们将主要关注DataFrame对象,并讨论其他一 ...
- ffmpeg一些笔记: 代码调试数据
1.AAC,MP3他的解码数据格式不支持,程序中给的是这个AV_SAMPLE_FMT_FLTP, Screen-Cpature-Recoder的codec-id为AV_CODEC_RAW_VIDEO ...
- ios证书免费分享
首先,ios证书能不能分享给别人使用,能否用别人的证书打包呢? 这个问题的答案在技术上是肯定可以的,但是我要解释一下,技术上可以,不代表真的就可以这样做,为什么呢? 首先,假如用别人的苹果开发者账号的 ...
- 解决004--Loading local data is disabled; this must be enabled on both the client and server sides问题及解决
因为下载了SQLyog的ultimate版本,现在就可以导入外部的数据了.有着之前使用insert into插入语句来添加近50条有着大概10个字段的记录的经历之后,本着能够导入现成的数据就导入的想法 ...
- MIT6.1810の学习笔记
webliuのmit.6.828学习笔记 写在前面 本文基于mit/6.828课程,附官方网址. 本文采用的实验环境为2020年版的xv6系统,需要wsl,vscode,docker工具.附环境配置教 ...
- 全球2023年自然科学指数(Nature Index),各单位排名表
地址: https://www.nature.com/nature-index/annual-tables/2023/institution/all/all/global 自然科学指数(Nature ...
- 机器人的运动控制是否可以引入生物学信息,生物学信息是否可以辅助机器人的智能控制算法的训练:《Robotic prosthetic ankles improve 'natural' movement, stability》
相关内容: Robotic prosthetic ankles improve 'natural' movement, stability 看了上面的论文的介绍(内容没看到,不是open access ...
- 如何在WSL2中安装可执行编译.cu文件的cuda环境
参考nvidia官方文档: https://docs.nvidia.com/cuda/wsl-user-guide/index.html#installing-insider-preview-buil ...