读EntityFramework.DynamicFilters源码_心得_整体了解01

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

改为

 

再次编译就都通过了:

 

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

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

第一看:看说明文档

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

第二看:实用示例

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

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

第三看:单元测试

 

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

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

         

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

时序图

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

                   

原文地址:https://www.cnblogs.com/gdnyfcuso/p/6523870.html