前两天同事发给我一个连接地址:实体框架高级应用之动态过滤 EntityFramework DynamicFilters为什么会找到动态过滤的内容,是源于前段时间,我们想做一个个人blog

后端用.NET CORE 做成可以跨平台的服务,前端用 react +redux

我们现在熟悉rafy框架的开发模式,关于Rafy可以参考 哲学驱动设计 - 胡庆访

但是rafy不目前不支持跨平台,所以后端我们就采用了EF Core+UOW 模式

什么是工作单元,我也不懂,第一次听说这个名词,虽然工作了几年了,现在自己就是这么小白 ,然后就去网上查找Unit of Work

When you're pulling data in and out of a database, it's important to keep track of what you've changed; otherwise, that data won't be written back into the database. Similarly you have to insert new objects you create and remove any objects you delete.

You can change the database with each change to your object model, but this can lead to lots of very small database calls, which ends up being very slow. Furthermore it requires you to have a transaction open for the whole interaction, which is impractical if you have a business transaction that spans multiple requests. The situation is even worse if you need to keep track of the objects you've read so you can avoid inconsistent reads.

A Unit of Work keeps track of everything you do during a business transaction that can affect the database. When you're done, it figures out everything that needs to be done to alter the database as a result of your work.

个人blog博客后端采用的ef+uow 前两天同事发过来实体框架高级应用之动态过滤 EntityFramework DynamicFilters 这个打开看,看完之后。发现这个只有不跨平台的EF DynamicFilters 那跨平台的有没有呢,网上找了一下,没有找到

就把那个源代码给下载了下来,下载地址:

https://github.com/jcachat/EntityFramework.DynamicFilters.git

打开之后界面如下:

生成解决方案的时候,报了两个错误

第一个是:nuget包无法还原 项目

DynamicFiltersTests 下的EntityFramework version="6.1.2" 打开本地的包去找发现没有,但是看到有一个6.1.1的包 就把6.1.2改成了6.1.1 暂时可以用了,后来再查的蚨,发现当时是网络有问题,下载不了内容,所以显示包还原失败,现在网络修好了就可以还原了

第二个是:EntityFramework.DynamicFilters 这个项目无法生成dll debug  release下死活就没有生成,去网上查了一下 vs生成不了dll 发现是framework 的版本引用不一致导致的,修改4.0

改为

再次编译就都通过了:

看别人写的代码的时候,习惯不好,一上来就习惯看代码里面类和类之间的引用关系,思考为什么要这么写,方法不正确,所以效率不高,如果有人引导式的阅读,看哪里不懂就像有个老师在身边就好了,这样随时可以讨教,但是源代码,大多时候,只有代码和文档

那要怎么看,我总结了一下觉得目前我了解到的方式

第一看:看说明文档

说明文档里面,会把对代码的实用方式介绍的很清楚,当然这是很正规的文档

第二看:实用示例

这个会告诉我们程序的常规入口,在哪里,为什么要找入口,找入口就像串珠子的线

找到这根线,才能把握主次,有轻有重,知道为什么这么设计

第三看:单元测试

单元测试,是一些很细的点的测试,能保证开发人员写的模块的健壮和稳定 同时对于阅读单元测试的其他人员,也能找到程序的使用方式,更快的用起来

第四看:看源码对外公布的接口,接口体现出来,对外交互的能力

第五看:画代码的时序图,什么是时序图

时序图

这样一步步下来,明白了作者的设计意图,知其然,知其所以然,然后才会有大的提升学到其他更多的东西,当能够把别人写的东西,像改自己的东西一样了然于胸的时候,才会以不变应万变。

读EntityFramework.DynamicFilters源码_心得_整体了解01的更多相关文章

  1. 读EntityFramework.DynamicFilters源码_心得_设计思想_04

    前几次,我们从说明文档,示例,单元测试了解了怎么用这个动态过滤器,那么如果仅仅是为了实现目的,知道怎么用就可以完成相应的功能开发,但我还想了解的问题是 作者是怎么将动态过滤器与EF结合的 有哪些设计思 ...

  2. 读EntityFramework.DynamicFilters源码_心得_单元测试03

    上个星期我们只是显示了一个示例,怎么在EF的框架内,注入我们拓展的动态过滤器 第一步:安装EntityFramework.DynamicFilters 第二步:重写OnModelCreating方法 ...

  3. 读EntityFramework.DynamicFilters源码_心得_示例演示02

    上次对EntityFramework.DynamicFilters整体的项目结构有了一个认识,这次我们就通过阅读说明文档,示例项目,和单元测试,来动手构建一个我们的体验项目,通过对动态过滤器的使用,使 ...

  4. Zookeeper_阅读源码第一步_在 IDE 里启动 zkServer(集群版)

    上篇文章Zookeeper_阅读源码第一步_在 IDE 里启动 zkServer(单机版)讲了在 idea 里以单机的方式启动zookeeper,这篇介绍一下以集群的方式启动. 集群方式启动,才会真正 ...

  5. Java 源码学习线路————_先JDK工具包集合_再core包,也就是String、StringBuffer等_Java IO类库

    http://www.iteye.com/topic/1113732 原则网址 Java源码初接触 如果你进行过一年左右的开发,喜欢用eclipse的debug功能.好了,你现在就有阅读源码的技术基础 ...

  6. Java并发指南10:Java 读写锁 ReentrantReadWriteLock 源码分析

    Java 读写锁 ReentrantReadWriteLock 源码分析 转自:https://www.javadoop.com/post/reentrant-read-write-lock#toc5 ...

  7. 如何读懂Framework源码?如何从应用深入到Framework?

    如何读懂Framework源码? 首先,我也是一个应用层开发者,我想大部分有"如何读懂Framework源码?"这个疑问的,应该大都是应用层开发. 那对于我们来讲,读源码最大的问题 ...

  8. 读源码【读mybatis的源码的思路】

    ✿ 需要掌握的编译器知识 ★ 编译器为eclipse为例子 调试准备工作(步骤:Window -> Show View ->...): □ 打开调试断点Breakpoint: □ 打开变量 ...

  9. (转)linux内存源码分析 - 内存回收(整体流程)

    http://www.cnblogs.com/tolimit/p/5435068.html------------linux内存源码分析 - 内存回收(整体流程) 概述 当linux系统内存压力就大时 ...

随机推荐

  1. celery简单理解和使用

    解决同步阻塞的问题 将耗时任务放到后台异步执行,不影响用户其他操作. 实现原理 任务队列是一种跨线程,跨机器的机制. 任务队列中包含称作任务的工作单元.有专门的进程持续不断的监视任务队列,并从中得到新 ...

  2. xcode - iPhone Debugging: How to resolve 'failed to get the task for process'? - Stack Overflow

    The program being debugged is not being run. Everyone sees this once in a while during Xcode develop ...

  3. HTML-★★★★JavaScript的DOM操作★★★★-重点部分

    Window.document 对象 一.找到元素 document.getElementById("id"); 根据id找,最多找一个: var a = document.get ...

  4. 记新人从 excel 文件中读取字典数据踩的一个坑

    原本是打算今天分享一下最近学习接口自动化的心得体会,然而在我写模板的时候,却被一个坑拦我大半天,心得体会不得不 延期再分享了.在我无数次调试无数次看log,终于发现并解决这个问题了.下面记录一下踩的坑 ...

  5. JAVA中 this关键字的用法

    this 在类中就是代表当前对象,可以通过 this 关键字完成当前对象的成员属性.成员方法和构造方法的调用. 那么何时用 this? 当在定义类中的方法时,如果需要调用该类对象,就可以用 this来 ...

  6. apache的应用(发布目录,黑白名单,虚拟主机,PHP-cgi支持,正向代理,https加密,)

    [root@apache1 ~]# yum install httpd -y [root@apache1 ~]# cd /var/www/html/   进入默认发布目录 [root@apache1 ...

  7. Locust HTTP client

    Http client 默认是以安全模式运行的,任何由于连接错误.超时或者类似错误引起的异常,都会返回一个空的Response对象,这个请求将会再locust统计中标记为failure,返回的虚拟对象 ...

  8. PHP输出毫秒时间戳

    代码: <?php list($msec, $sec) = explode(' ', microtime()); $msectime = (float)sprintf('%.0f', (floa ...

  9. docker 把镜像打包成文件

    保存镜像为文件 docker save -o 要保存的文件名 要保存的镜像 举例: [root@iZbp16cdvzk4rhl0vn1gedZ ~]# ls aaa.cap install.sh mo ...

  10. 利用partial关键字声明分部类和分部方法

    一.分部类 1.分部类的定义:简单的说,分部类就是把一个类拆分成多个类,每个类文件只包含其中的一部分,类.结构.接口.方法都可以拆分,在定义的时候加上partial修饰符. 注意:分部类必须属于同一命 ...