創建實體類


返回總目錄《一步一步使用ABP框架搭建正式項目系列教程》


上一篇博客,我們使用ABP模板創建了一個解決方案。現在,打開該解決方案,目錄圖如下:

QQ圖片20151030142234

下面直奔今天的主題——《創建實體類》。

一點小插曲:接觸ABP框架之前,一直都是使用的EF的DBFirst,在那種模式下,我們只要設計好數據庫,然后直接通過模板就生成了實體層,甚至都沒怎么留意實體層的代碼是什么樣子。現在要使用CodeFirst,就要反過來,先要寫代碼了,真有點不適應。好吧,為了學好ABP,也要硬着頭皮看看這其中的代碼到底啥模樣,但我這里不一定一行一行地敲哦,畢竟我這個系統就20多個實體左右,說不定以后還會增加,一個一個敲太費時間了。格外注意哦:在操作代碼之前,先打開Nuget工具,還原所有沒有加載成功的程序集。

理論學習:

ABP框架提供了一個定義了Id屬性的Entity類。我們可以通過繼承此類來讓自己的實體類擁有這個屬性,注意一點的是,這個Id是Int 32類型的。如果你的類的Id類型不是該類型,不要緊,ABP框架還提供了這個類的泛型Entity<T>,這里的T可以是任何你想要的類型。

動手實踐:

我這里有很多之前已經設計好的表,然后我直接通過動軟代碼生成器從數據庫中生成這些實體類。至於使用動軟代碼生成器的詳細步驟,不是這里討論的重點,有興趣的園友可以自己動手找一下這方面的資料。

image

在生成代碼之前,我必須定義一個實體類的模板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) #>()
        {
        
        }
   
    }
    
}

接下來就是操作動軟代碼生成器生成大量的實體類了。

image

生成之后,將代碼放到項目中的領域層,下圖就是我生成的代碼了。

 

說明:用模版生成的解決方案,其中的每個項目默認都只是以"公司名.項目名"為命名空間的前綴,比如,我這里實體類的默認命名空間是“Noah.ChargeStation.Entities”,但我更喜歡這種命名方式“Noah.ChargeStation.Core.Entities”。所以,自己要手動改一下項目的默認命名空間,以后添加的文件都會更正了,但之前已經創建的文件還要手動修改。

生成實體類的工作就完成了,下一篇我們創建DbContext。

返回總目錄《一步一步使用ABP框架搭建正式項目系列教程》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM