有网站专门做效果图,南京网页设计招聘,注册一个公司最少要多少钱,网站没快照前言α角 与 β角关于α角 与 β角的介绍#xff0c;请见上文 如何用EFCore Lazy Loading实现Entity Split。本篇会继续有关于β角的彩蛋在等着大家去发掘。/斜眼笑其他本篇的程序#xff0c;可以在 https://github.com/kentliu2007/EFCoreDemo/tree/master/InheritanceWithE… 前言α角 与 β角关于α角 与 β角的介绍请见上文 如何用EFCore Lazy Loading实现Entity Split。本篇会继续有关于β角的彩蛋在等着大家去发掘。/斜眼笑其他本篇的程序可以在 https://github.com/kentliu2007/EFCoreDemo/tree/master/InheritanceWithEntitySplit 下载。建议大家可以下载之后对照着程序来阅读本篇我用的是VS2017。由于篇幅比较长为了方便阅读本篇分成两个部分。如果耐着性子看完第一部分而不是处女座/不是DB First er的可以止步不需要继续看第二部分了。需求我们先来看看需求某校园的一个人员资料系统其中可登录用户有两种教师和学生。每个可登录用户具有以下属性用户登录名 该系统用户的唯一标识值姓名密码教师。系统需要记录 教师 的以下属性教职工号码 某校园里该教师的唯一标示值工资级别 自编的工资级别学生。系统需要记录 学生 的以下属性学生编号 某校园里该学生的唯一标示值学生就读年级逻辑设计根据上述需求我们会有以下这样的类的设计上述设计还有一个一点点不同的版本物理设计从逻辑设计到物理设计会由于我们选择的具体的实现方式而产生一定的偏差。例如不同厂商的数据库引擎或者不选用数据库引擎而选用其他的产品MQ或者NoSQL类产品甚至不同的ORM产品都会引致偏差的发生。用EF6怎么实现下面我们从DB First er的角度直接根据上述的逻辑设计设计出数据表。然后再看看用EF6如何实现。数据表Users的索引Students的索引Teachers的索引FK_Students_Users的设置FK_Teachers_Users的设置EF Model在各种wizard的帮助下逆向工程后我们需要做一些小改动删掉某些Property以及Navigation Property然后把 Inheritance 关系拉好。并且转换一下 User.UserType为Enum UserTypes。于是我们就有了这样的 EF Model第一个β角的彩蛋我们根据习惯通常会把UserType设置为Enum。这个和逻辑设计有一点点偏差程序SolutionUnit Test测试数据EF6对类的继承提供了支持所以从类到表然后再到EF一切都很顺其自然一气呵成。用EFCore怎么实现EFCore也提供类的继承的支持可以在这里查看微软的文档https://docs.microsoft.com/zh-cn/ef/core/modeling/inheritance 以及 https://docs.microsoft.com/zh-cn/ef/core/modeling/relational/inheritance由于EFCore更加倾向于Code First所以我们按照文档来走一遍然后对本篇的需求就会有以下的产出程序SolutionUser、Student和Teacher的程序 public partial class User{ public string LoginName { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Password { get; set; }} public partial class Student : User{ public string StudentCode { get; set; } public int GradeLevel { get; set; }} public partial class Teacher : User{ public string StaffCode { get; set; } public int SalaryGrade { get; set; }}DBContext的程序Unit Test程序数据表有了上述的程序我们跑一下Migration命令于是就有以下的表结构Migration命令表结构Users的索引没有其他表了真的没有了。用EF Core的正向工程上述的三个父子类它就是生成这样一个数据表就够了。当然DBA还可能对数据表做一点改动例如 主键不要是 聚集索引等。不过基于不骗篇幅的借口让我们偷一下懒吧。 :-P第二个β角的彩蛋出现了。由于我们选用了 EF Core物理设计的数据表竟然和逻辑设计有着喇么大的偏差测试数据好吧看起来用EFCore来实现类的继承也很简单。一切操作只需要按照教程一步步捣弄也很直接方便。本篇结语上面就是EF6 和 EFCore分别怎样支持 类的继承的做法。如果你是Code First er可以止步于此了。如果你是处女座或者 DB First er你会发现EFCore正向工程后的数据表表结构很特别且看着测试数据的结果会感觉是一堵装饰墙。反正就是总觉得有说不出来的违和感。你会想有没有可能让EFCore用上和逻辑设计之间β角偏差最小的数据表呢如果你有上述的感觉和疑问欢迎继续看下一篇EFCore Lazy Loading Inheritance 干净的数据表 二 【献给处女座的DB First程序猿】。相关文章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