创建实体类
返回总目录《一步一步使用ABP框架搭建正式项目系列教程》
上一篇博客,我们使用ABP模板创建了一个解决方案。现在,打开该解决方案,目录图如下:
下面直奔今天的主题——《创建实体类》。
一点小插曲:接触ABP框架之前,一直都是使用的EF的DBFirst,在那种模式下,我们只要设计好数据库,然后直接通过模板就生成了实体层,甚至都没怎么留意实体层的代码是什么样子。现在要使用CodeFirst,就要反过来,先要写代码了,真有点不适应。好吧,为了学好ABP,也要硬着头皮看看这其中的代码到底啥模样,但我这里不一定一行一行地敲哦,毕竟我这个系统就20多个实体左右,说不定以后还会增加,一个一个敲太费时间了。格外注意哦:在操作代码之前,先打开Nuget工具,还原所有没有加载成功的程序集。
理论学习:
ABP框架提供了一个定义了Id属性的Entity类。我们可以通过继承此类来让自己的实体类拥有这个属性,注意一点的是,这个Id是Int 32类型的。如果你的类的Id类型不是该类型,不要紧,ABP框架还提供了这个类的泛型Entity<T>,这里的T可以是任何你想要的类型。
动手实践:
我这里有很多之前已经设计好的表,然后我直接通过动软代码生成器从数据库中生成这些实体类。至于使用动软代码生成器的详细步骤,不是这里讨论的重点,有兴趣的园友可以自己动手找一下这方面的资料。
在生成代码之前,我必须定义一个实体类的模板Entity.cmt,我的模板代码如下:
<#@ template language="c#" HostSpecific="True" #> <#@ output extension= ".cs" #> <# TableHost host = (TableHost)(Host); host.Fieldlist.Sort(CodeCommon.CompareByintOrder); #> using System; using Abp.Domain.Entities; namespace Noah.ChargeStation.Entities<# if( host.Folder.Length > 0) {#>.<#= host.Folder #><# } #> { <# if( host.TableDescription.Length > 0) {#> //<#= host.TableDescription #> <# } #> public class <#= host.GetModelClass(host.TableName) #>:Entity { <# foreach (ColumnInfo c in host.Fieldlist) { if(c.ColumnName!="Id") { #>/// <summary> /// <#= string.IsNullOrEmpty(c.Description) ? c.ColumnName : c.Description #> /// </summary> public virtual <#= CodeCommon.DbTypeToCS(c.TypeName) #><# if(c.Nullable) { #><#if(CodeCommon.isValueType(CodeCommon.DbTypeToCS(c.TypeName ))){ #>?<# }#><# }#> <#= c.ColumnName #> { get; set; } <# }} #> public <#= host.GetModelClass(host.TableName) #>() { } } }
接下来就是操作动软代码生成器生成大量的实体类了。
生成之后,将代码放到项目中的领域层,下图就是我生成的代码了。
说明:用模版生成的解决方案,其中的每个项目默认都只是以"公司名.项目名"为命名空间的前缀,比如,我这里实体类的默认命名空间是“Noah.ChargeStation.Entities”,但我更喜欢这种命名方式“Noah.ChargeStation.Core.Entities”。所以,自己要手动改一下项目的默认命名空间,以后添加的文件都会更正了,但之前已经创建的文件还要手动修改。
生成实体类的工作就完成了,下一篇我们创建DbContext。
返回总目录《一步一步使用ABP框架搭建正式项目系列教程》
已将所有赞助者统一放到单独页面!签名处只保留最近10条赞助记录!查看赞助者列表
衷心感谢打赏者的厚爱与支持!也感谢点赞和评论的园友的支持! | |||
---|---|---|---|
打赏者 | 打赏金额 | 打赏日期 | |
微信:匿名 | 10.00 | 2017-08-03 | |
微信:匿名 | 10.00 | 2017-08-04 | |
微信:匿名 | 5.00 | 2017-06-15 | |
支付宝:一个名字499***@qq.com | 5.00 | 2017-06-14 | |
微信:匿名 | 16.00 | 2017-04-08 | |
支付宝:向京刘 | 10.00 | 2017-04-13 | |
微信:匿名 | 10.00 | 2017-003-08 | |
微信:匿名 | 5.00 | 2017-03-08 | |
支付宝:lll20001155 | 5.00 | 2017-03-03 | |
支付宝:她是一个弱女子 | 5.00 | 2017-03-02 |