前两天同事发给我一个连接地址:实体框架高级应用之动态过滤 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. P4597 序列sequence

    传送门 题解 完全看不懂大佬们在说什么……特别是chen_zhe大佬写的…… 来说说个人的理解吧 大佬们说:考虑当前的数$x$和之前的最大数$y$,(默认$x<y$,因为如果$x>=y$已 ...

  2. Vim Clutch | 面向脚踏板编程

    简评:这是使用硬件制作的一个离合器踏板,控制 Vim 的 insert mode 和 normal mode ~ Github 上有个关于 Vim 的项目,项目作者 Aleksandr Levchuk ...

  3. HTML-文本域属性设置

    1.设置文本域的字体 <TEXTAREA STYLE="font-size:9pt;font-family:verdana;color:#333333">输入内容< ...

  4. C#-★★函数★★

    一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能.所有的高级语言中都有子程序这个概念,用子程序来实现模块的功能.在C#语言中,子程序的作用是由一个主函数和若干个函数构成.由主函数 ...

  5. MPMoviePlayerViewController不能播放本地mp4的解决办法.

    之前一直用MPMoviePlayerViewController进行网络播放,最近下载文件然后本地播放,发现怎么播放都是黑屏.后来发现MPMoviePlayerViewController的本地URL ...

  6. C#之集合

    数组(http://www.cnblogs.com/afei-24/p/6738128.html)的大小是固定的.如果元素的个数是动态的,就应使用集合类. 列表(http://www.cnblogs. ...

  7. 主库binlog被purge的情形

    1.演示实验环境 --主库版本: root@(none)>show variables like 'version'; +---------------+-------------------- ...

  8. java centos7配置查看jdk环境变量

    [root@bogon java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64]# which java/usr/bin/java[root@bogon jav ...

  9. Postman学习(压力测试)

    Postman下载安装后 下面是在网上随便抓了一个请求地址来做演示,把请求地址填入地址栏,此请求为GET请求.点击Send发送请求,请求结果将会在下方显示出来.每次的请求历史数据,会被记录下来,但是经 ...

  10. Ubuntu安装google-chrome

    原文地址:http://www.linuxidc.com/Linux/2013-10/91857.htm安装谷歌浏览器,只需要三行代码: 打开终端,输入 cd /tmp 对于谷歌Chrome32位版本 ...