.NET Core实战项目之CMS 第十一章 开发篇-数据库生成及实体代码生成器开发

上篇给大家从零开始搭建了一个我们的ASP.NET Core CMS系统的开发框架,具体为什么那样设计我也已经在第十篇文章中进行了说明。不过文章发布后很多人都说了这样的分层不是很合理,什么数据库实体应该跟仓储放在一起形成领域对象,什么ViewModel应该放在应用层结构仓储层与UI层。其实我想说的是,这样都没问题,看你自己的理解了!我上篇文章已经说了,如果你愿意,完全可以把所有的层融合在一起,随意合并分离这个依你个人喜好。
我也是本着简单原则以及合适原则的思想来进行那样的分层结构,觉得这样层次更分明些。还有虽然现在DDD的思想很流行,但是实现起来确很复杂,小项目就别那样折腾了。如果你有不同的意见,欢迎加群讨论。什么?你问我群号?自己找去,我才不会告诉你!

本文已收录至《.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划》
作者:依乐祝
原文地址:https://www.cnblogs.com/yilezhu/p/10112406.html

写在前面

今天我们就进入.NET Core实战项目之CMS的开发篇了,在开始之前呢我们首先需要把我们前面设计的逻辑模型转换成对应的物理模型,再根据我们物理模型生成相应的数据库脚本,接着我们就新建数据库,然后执行下我们生成的脚本即可。当然这么多表如果一个一个的写对应的数据库实体模型,一个一个的写仓储层代码以及服务层代码,感觉就是在搬砖啊,有木有,所以当然得自己实现个代码生成器来自动生成这些代码了!下面我们一步步来先生成下数据库然后再打造一个实体模型的代码生成器吧!

数据库生成 生成物理模型

首先用pdm打开我们设计的逻辑模型文件,后缀名是ldm的文件,如下图所示:

1544535967072

依次点击“Tools”-》"Generate Logical Data Model",如下图所示。或者直接使用快捷键Ctrl+Shift+P 打开物理模型生成选项对话框。

1544536138034

如下图所示选择号对应的数据库后,自定义物理模型的名称代码后点击确定即可生成物理模型。这里数据库类型有很多选择如:mysql,sqlserver,oracle等等,我们选择sqlserver2008,你可以随意从下拉框选择一个数据库进行生成(当然要跟你的数据库对应)!

1544536437133

注意这里生成的物理模型默认是不会生成注释的如下图所示:

1544537349509

怎么办呢?如何才能讲Name 列的内容拷贝到Comment这个里面呢?因为这个Commment里面的内容才会真正的转换到数据库字段的注释。

这时候你需要Tools->Execute Commands->Edit/Run Scripts (或者快捷键Ctrl+Shift+X)打开脚本执行的窗口,然后把下面的代码拷贝进行 run一下即可。

'代码一:将Name中的字符COPY至Comment中 Option Explicit ValidationMode = True InteractiveMode = im_Batch Dim mdl ' the current model ' get the current active model Set mdl = ActiveModel If (mdl Is Nothing) Then MsgBox "There is no current Model " ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then MsgBox "The current model is not an Physical Data model. " Else ProcessFolder mdl End If ' This routine copy name into comment for each table, each column and each view ' of the current folder Private sub ProcessFolder(folder) Dim Tab 'running table for each Tab in folder.tables if not tab.isShortcut then tab.comment = tab.name Dim col ' running column for each col in tab.columns col.comment= col.name next end if next Dim view 'running view for each view in folder.Views if not view.isShortcut then view.comment = view.name end if next ' go into the sub-packages Dim f ' running folder For Each f In folder.Packages if not f.IsShortcut then ProcessFolder f end if Next end sub

1544537692272

这里脚本执行的很快,你也可以把脚本保存起来下次再用,执行后的效果如下所示:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspyxd.html