1. 程式人生 > >基於ABP做一個簡單的系統——實戰篇:2.程式碼生成器

基於ABP做一個簡單的系統——實戰篇:2.程式碼生成器

上一篇正說著呢,程式碼生成器就來了。

1.適用於ABP官網的Startup Template V3.x的包含了登入、使用者等頁面的MPA應用模板
2.當前view僅支援文字框生成,遠期規劃根據欄位型別生成不同的控制元件
3.只需要寫好Entity,剩下的交給程式碼生成器,一鍵生成所有重複程式碼。
4.基於winform,脫離VS存在,只要有.net framework,什麼環境都能執行起來。

下載連結放在最後

 

 

 

使用方法及其簡單:

1.按照規則,編寫Entity實體類. 規則如下:
1)名稱空間統一用複數,類名用單數,方便程式碼維護
2)如果時String型別欄位,需要加一個MaxFieldLengthd的靜態int變數,不僅用於code-first生成資料庫時使用,也用於DTO欄位長度限制,也會在生成檢視時自動加上maxlength屬性
3)每個欄位都要加上FieldDisplay格式的靜態String變數,用於dto,view的欄位名稱顯示
4)如果是必填欄位,打上Required屬性,Entity不需要加DisplayName屬性!保持如下乾淨的狀態即可。
5)建議每個entity都加上String型別欄位Name,用於模糊查詢

using Abp.Domain.Entities.Auditing;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;

namespace Rock.DictBooks
{
    [Table("ai_dict_book")]
    public class DictBook : FullAuditedEntity<long>
    {
        public const int MaxDictNameLength = 128;
        public const int MaxItemNameLength = 128;
        public const int MaxItemDescLength = 512;

        public const string DictNameDisplay = "字典名稱";
        public const string ItemNameDisplay = "資料項名稱";
        public const string ItemDescDisplay = "資料項描述";

        [Required]
        [StringLength(MaxDictNameLength)]
        public string DictName { get; set; }
        [Required]
        [StringLength(MaxItemNameLength)]
        public string ItemName { get; set; }
        [StringLength(MaxItemDescLength)]
        public string ItemDesc { get; set; }
    }
}

 

2.修改“\src\Rock.EntityFrameworkCore\EntityFrameworkCore\RockDbContext.cs”,新增一行“public DbSet<EntityName> EntityNames { get; set; }”,把其中的ENtityName換成實際的實體名稱。

3.並Add-Migration "xxx",Update-Database(做過code-first的都懂)

4..啟動程式碼生成器,設定好實體類檔案路徑,專案根目錄,名稱空間(下載模板時的“Choose your project's name”),實體中文面描述,主鍵型別,點選生成程式碼

5.修改“\src\Rock.Web.Mvc\Startup\PageNames.cs”,增加一行“ public const string Test = "Test";”,把其中的Test換成實際的頁面名稱

6.修改\src\Rock.Core\Localization\SourceFiles\Rock-zh-Hans.xml,新增一行“<text name="Default">預設頁面</text>”,是為了程式碼生成器生成的頁面中文翻譯,這裡的Default更改為實際頁面名稱,下同
7.修改“\src\Rock.Core\Authorization\PermissionNames.cs”,新增一行“ public const string Pages_Default = "Pages.Default";”

8.修改"\src\Rock.Core\Authorization\RockAuthorizationProvider.cs",新增一行“context.CreatePermission(PermissionNames.Pages_Default, L("Default"));”,是為了給新增頁面賦予預設許可權

9.修改“\src\Rock.Web.Mvc\Startup\RockNavigationProvider.cs”,增加以下程式碼,加入選單

                .AddItem(
                    new MenuItemDefinition(
                        PageNames.Test,
                        L("Default"),
                        url: "Test",
                        icon: "fas fa-info-circle",
                    permissionDependency: new SimplePermissionDependency(PermissionNames.Pages_Default)
                    )
                )

 

這時候編譯程式,執行,就可以開啟預設模板生成的頁面了

V 1.0預設模板只生成基本的增刪改查功能,所有內容錄入都為文字框,後續版本會根據欄位型別生成不同型別的輸入框。程式是基於Razor引擎開發的,所以只要你懂Razor語法,tpl檔案可以按自己的意思修改,全部放在Template目錄下。程式碼寫的比較早,等我整理一下再開源吧。不用T4是因為每個專案都要手動生成,而且還經常程序鎖死,很鬧心,所以自己弄了個。

P.S. 需要.net framework 4.5.2才能執行

使用方法:解壓,執行Winform.exe即可

連結:https://pan.baidu.com/s/1jormHZBRZyPOj3ijLagG_g
提取碼: