衡水网站推广的网络公司,视频门户网站建设项目标书,Wordpress作者无法添加标签,装修案例文案前言本篇是上一篇EFCore Lazy Loading Inheritance 干净的数据表 #xff08;一#xff09; 【献给处女座的DB First程序猿】 前菜 的续篇。这一篇才是真的为处女座的DB First程序猿准备的正餐。继续上一篇的话题#xff0c;我们希望用EFCore#xff0c;且继续使用与逻辑… 前言本篇是上一篇EFCore Lazy Loading Inheritance 干净的数据表 一 【献给处女座的DB First程序猿】 前菜 的续篇。这一篇才是真的为处女座的DB First程序猿准备的正餐。继续上一篇的话题我们希望用EFCore且继续使用与逻辑设计的β角偏差很少的数据表结构彻底不想看到那种“装饰墙”的效果。提醒一下这一部分属于有点”走火入魔“的性质。因为是要回过头来改动类的代码稍微改动逻辑设计来迁就数据表物理设计通过达到平衡点来实现处女座们希望看到的“完美“结果。本篇的程序可以在 https://github.com/kentliu2007/EFCoreDemo/tree/master/InheritanceWithEntitySplit 下载。建议大家可以下载之后对照着程序来阅读本篇我用的是VS2017。直接配置EFCore的DBContext可行否我们能否通过在DBContext里面配置好Entity和数据表的关系是否就可以看下面的程序DBContextUnit Test实际上出错的话Unit Test才可以通过。所以基于这样的结果我们知道没戏。拉倒吧。哪怕我们已经很认真地配置好了Entity和数据表的关系。已经精确到每个字段级别都没有漏了。结果其实程序会报错的。不信跑跑Unit Test就知道了。用EFCore Lazy Loading来实现吧有什么办法来实现还记不记得我的博客里面有一篇如何用EFCore Lazy Loading实现Entity Split在这一篇里面我们用了 Lazy Loading的功能用walk around的方式实现了 entity split。这个walk around的思路我们可以借鉴用起来对Students和Teachers数据表我们可以建立两个对应的类分别弄个InternalStudent和InternalTeacher的类。DBContext里面设置好InternalStudent以及InternalTeacher的映射关系Student / Teacher 类特有的属性我们用Lazy Loading的方式在getter/setter里面改为访问上述InternalStudent / InternalTeacher实例所对应的属性。数据表和程序数据表表的索引和俩外键和上一篇差不多就不骗篇幅了。( 如果拿着这个数据表和一开始的逻辑设计比较我们又会发现出现了偏差很小的β角彩蛋 )Solution程序UserInternalStudentStudentInternalTeacher和Teacher的程序和InternalStudent以及Student差不多思路就不骗篇幅了。DBContextUnit TestDemo数据搞定了。就这样用walk around的做法实现了“完美”的平衡点让处女座的DB First er程序猿不再纠结。还可以吧 :-P结语这种walk around的做法虽然有点走火入魔但是在 EFCore更好地支持类继承或者Entity Split之前咱们先凑合着用起来吧。相信随着EFCore版本的不断更新面包会有的,牛奶会有的,一切都会有的。。相关文章Shadow Properties之美一【Microsoft Entity Framework Core随笔】Shadow Properties之美二【Microsoft Entity Framework Core随笔】“幕后英雄”之Backing Fields【Microsoft Entity Framework Core随笔】如何用EFCore Lazy Loading实现Entity Split原文地址https://www.cnblogs.com/fatkent/p/10396596.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com