怀化网站建设,无锡制作网站,wordpress页面超链接,电子商城网站开发文档接着上一篇Shadow Properties之美#xff08;一#xff09;#xff0c;我们来继续举一个有点啰嗦的栗子。先看简单需求#xff1a;某HR系统#xff0c;需要记录员工资料。需要记录的资料有#xff1a;员工号#xff08;规则#xff1a;分公司所在城市拼音首字母#x… 接着上一篇Shadow Properties之美一我们来继续举一个有点啰嗦的栗子。先看简单需求某HR系统需要记录员工资料。需要记录的资料有员工号规则分公司所在城市拼音首字母加上三位的顺序数字例如 GZ001CD001SH007等对于每个员工有且仅有一个员工号且不会存在同一员工号属于不同员工的情况姓名最后一次入职日期有些员工可能会有来来回回超过一次的入职离职再入职保存最后一次就好其他。。。在继续讨论之前会用到有关 逻辑设计 和 物理设计 的概念它们两者的区别建议可以先阅读一下 https://it.toolbox.com/blogs/timbryce/logical-vs-physical-design-do-you-know-the-difference-050306 然后我们再继续。针对这个需求我们简单地会有以下这样逻辑设计的类其中EmployeeCode就是 Unique Identifier 唯一标识符。本篇的程序可以在这里下载https://github.com/kentliu2007/EFCoreDemo/tree/master/ShadowProperty 用的是VS 2017并且习惯性地会有按照 Default大法有以下的数据表以及程序数据表、、虽然default大法好而且还可以借口 “用自增长ID来做主键可以加快数据库做join的时候的速度”所以才没有用 EmployeeCode来做主键虽然这个才是Unique Identifier。。。但是我们还是需要做一些不是完全default的改动仔细看上面绿色标识的内容请留意clustered index以及unique key。演示数据然后我们还有比较传统的基于EF6的WebApi、、、、、、、图有点多但是因为都按照 default 大法 来捣弄的。一切都很简单很溜对吧不过等等画风有点不对负责BDD的同事不论是SME/BA/QC可能会跳起来如果我们要查询员工号是 SH007 的员工为什么是 http://localhost:62021/api/Employees/3 如果换个DB手动操作一下或者测试并发量大的前提下说不定要 http://localhost:62021/api/Employees/250 才是 SH007的数据了。如果换成是用GUID来做ID字段的就可能会有类似这样的http://localhost:62021/api/Employees/85a13f20-2d3e-4a21-807d-c64f5a55a626 这个又是什么鬼其他系统call这个api的时候或者BDD的案例描述是查询员工号是SH007的员工的资料。。。但是我怎么知道你这个DB里面ID是什么数字如果是GUID的话鬼知道又是个什么冰糖葫芦串麻烦请说人话好不好这种逻辑设计里面本来就没有的由于物理设计才出现的东西DataAccess层请你自己留着和数据库两个慢慢玩不要漏出来给其他层好不好还有俩Employee的类有点拖沓了吧好吧为了保持跟逻辑层一致并且不想要两个employee类继续使用EF6我们会有第二个版本、、、、、这下画风正常了。不过一堆模块都需要引用或者基于 DataAccess 模块还有虽然只有一个employee类了但是还要加上一些其他internal的属性。。。总感觉还是做得不够优雅混了牛奶和糖的美式啊。现在有了EF Core的Shadow Property我们可以把这个做得很优雅鼓掌。Shadow Property就是让我们可以保持 逻辑设计层 美式的纯正然后让 DataAccess层 可以处理和消化掉 物理设计层 特有的元素、、、、、看一切都很 “美式” 的优雅不存在骗奶骗糖的感觉从Component Diagram来看各个模块都引用着正确的逻辑设计模块DataAccess模块没有需要多产生一个拖沓的EF类外部系统以及人机对话的时候都是针对逻辑设计来交谈且说的都是人话。本篇图有点多建议结合下载的源代码来阅读本文。希望通过上述两个栗子让大家能够感受到Shadow Property的美且能在工作中更灵活地把它用起来。谢谢能耐着性子看到这里的大神们。请温柔一点吐槽哈。下一篇我计划向大家介绍一下EF Core的一个“幕后英雄” -- Backing Fields。敬请期待噢。。。原文地址https://www.cnblogs.com/fatkent/p/10333487.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com