From a13d105532a6587785f2600af65467660e296b5f Mon Sep 17 00:00:00 2001 From: niltor Date: Mon, 11 Dec 2023 14:46:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AF=B4=E6=98=8E=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zh/ater.dry/.order | 3 +- .../DTO\347\224\237\346\210\220.md" | 60 +++++++++++++ .../Manager\347\224\237\346\210\220.md" | 2 + ...72\350\203\275\345\212\251\346\211\213.md" | 18 ---- ...20\350\241\214\351\241\271\347\233\256.md" | 82 ++++++++++++++++++ "zh/ater.dry/\345\256\211\350\243\205.md" | 8 +- "zh/ater.dry/\346\246\202\350\277\260.md" | 6 +- zh/ater.web/.order | 2 +- "zh/ater.web/\346\246\202\350\277\260.md" | 7 +- zh/images/createSolution.jpg | Bin 0 -> 4917 bytes zh/images/createSolutionPage.jpg | Bin 0 -> 97080 bytes 11 files changed, 165 insertions(+), 23 deletions(-) create mode 100644 "zh/ater.dry/\344\273\243\347\240\201\347\224\237\346\210\220\350\257\264\346\230\216/DTO\347\224\237\346\210\220.md" create mode 100644 "zh/ater.dry/\344\273\243\347\240\201\347\224\237\346\210\220\350\257\264\346\230\216/Manager\347\224\237\346\210\220.md" delete mode 100644 "zh/ater.dry/\344\275\234\344\270\272\346\231\272\350\203\275\345\212\251\346\211\213.md" create mode 100644 "zh/ater.dry/\345\210\233\345\273\272\345\271\266\350\277\220\350\241\214\351\241\271\347\233\256.md" create mode 100644 zh/images/createSolution.jpg create mode 100644 zh/images/createSolutionPage.jpg diff --git a/zh/ater.dry/.order b/zh/ater.dry/.order index c8e6849..41c52b6 100644 --- a/zh/ater.dry/.order +++ b/zh/ater.dry/.order @@ -1,5 +1,6 @@ 概述 安装 -作为智能助手 +创建并运行项目 Studio +代码生成说明 命令行 \ No newline at end of file diff --git "a/zh/ater.dry/\344\273\243\347\240\201\347\224\237\346\210\220\350\257\264\346\230\216/DTO\347\224\237\346\210\220.md" "b/zh/ater.dry/\344\273\243\347\240\201\347\224\237\346\210\220\350\257\264\346\230\216/DTO\347\224\237\346\210\220.md" new file mode 100644 index 0000000..a4ee388 --- /dev/null +++ "b/zh/ater.dry/\344\273\243\347\240\201\347\224\237\346\210\220\350\257\264\346\230\216/DTO\347\224\237\346\210\220.md" @@ -0,0 +1,60 @@ +# DTO生成说明 + +使用工具可以解析实体,并生成相应的DTO,以下说明具体生成的规则。 + +## 生成内容 + +一个实体通常会生成以下几个模型类: + +- `ItemDto`: 用于列表元素的模型 +- `ShortDto`: 用于获取模型主要信息的模型 +- `FilterDto`: 用于请求的筛选模型 +- `AddDto`: 用于实体添加时的模型 +- `UpdateDto`:用于更新的模型 + +## 生成说明 + +如果实体属性含有[JsonIgnore]属性,那么生成的DTO都会忽略该属性。 + +### ItemDto + +列表元素不会包括以下属性: + +- IsDeleted与UpdatedTime字段,但会包含CreatedTime +- 数组或列表 +- 长度大于1000的字符串 +- 导航属性及对应Id + +### ShortDto + +在ItemDto的基础上,忽略 CreatedTime以及"Content"字段。 + +### FilterDto + +FilterDto生成内容如下: + +- 忽略 "Id", "CreatedTime", "UpdatedTime", "IsDeleted"等基础属性 +- 忽略列表及导航属性 +- 忽略最大长度在于1000的字符串属性 +- 保留必需属性(但不为导航属性) +- 包括枚举属性 + +### AddDto + +添加模型生成内容如下: + +- 忽略 "Id", "CreatedTime", "UpdatedTime", "IsDeleted"等基础属性 +- 必须是可赋值的属性,即有`set`方法。 +- 对于导航属性,会进行以下处理: + - 忽略非必需的导航属性 + - 忽略列表导航属性 + - 对于必需的导航属性,会生成`属性名`+`Id`的形式来表示 + +### UpdateDto + +更新模型生成内容同添加模型,但是更新模型所有属性默认都为可空属性。 + +可空属性,意味着,如果该字段为空,更新时,会忽略该字段,以此来实现部分更新。 + +> [!TIP] +> 如果你习惯进行全量更新,可直接复用`AddDto`模型。 diff --git "a/zh/ater.dry/\344\273\243\347\240\201\347\224\237\346\210\220\350\257\264\346\230\216/Manager\347\224\237\346\210\220.md" "b/zh/ater.dry/\344\273\243\347\240\201\347\224\237\346\210\220\350\257\264\346\230\216/Manager\347\224\237\346\210\220.md" new file mode 100644 index 0000000..278d868 --- /dev/null +++ "b/zh/ater.dry/\344\273\243\347\240\201\347\224\237\346\210\220\350\257\264\346\230\216/Manager\347\224\237\346\210\220.md" @@ -0,0 +1,2 @@ +# Manager代码生成说明 + diff --git "a/zh/ater.dry/\344\275\234\344\270\272\346\231\272\350\203\275\345\212\251\346\211\213.md" "b/zh/ater.dry/\344\275\234\344\270\272\346\231\272\350\203\275\345\212\251\346\211\213.md" deleted file mode 100644 index 120da77..0000000 --- "a/zh/ater.dry/\344\275\234\344\270\272\346\231\272\350\203\275\345\212\251\346\211\213.md" +++ /dev/null @@ -1,18 +0,0 @@ -# 作为智能助手 - -**droplet**并不是简单的代码生成器,它通过分析和理解您的实体模型类,更具智慧的理解您的业务逻辑和实现意图,并基于此来生成相关基础代码,您无需从0开始。你所需要做的就是关注业务本身的模型设计。 - -## 实体定义示例 - -## 更智能的数据传输对象 - -DTO是完全基于实体生成的,你不需要通过UI界面自己去定义。只需要基于生成的内容进行调整和修改即可。 - -## 智能的数据库操作 - -基于对实体模型本身的分析和理解,droplet会试图帮您生成对象的添加、修改和查询等功能。 -即使你的实体之前具有一定的关联性,droplet也可以分析并生成相应的代码,对于筛选查询,droplet也会试图理解您的意图,生成默认的筛选条件。 - -## 实体库 - -提供实体库,帮助您设计您的实体,而不需要完全从零开始。 diff --git "a/zh/ater.dry/\345\210\233\345\273\272\345\271\266\350\277\220\350\241\214\351\241\271\347\233\256.md" "b/zh/ater.dry/\345\210\233\345\273\272\345\271\266\350\277\220\350\241\214\351\241\271\347\233\256.md" new file mode 100644 index 0000000..f25e79c --- /dev/null +++ "b/zh/ater.dry/\345\210\233\345\273\272\345\271\266\350\277\220\350\241\214\351\241\271\347\233\256.md" @@ -0,0 +1,82 @@ +# 创建并运行项目 + +## 创建解决方案 + +点击创建按钮,进入到解决方案创建页面。 + +:::image type="content" source="../images/createSolution.jpg" alt-text="create solution"::: + +你会看到以下页面,请填写解决方案名称和本地路径,然后点击创建。 + +:::image type="content" source="../images/createSolutionPage.jpg" alt-text="create solution page"::: + +## 运行解决方案 + +现在使用你喜欢的IDE打开解决方案,或者直接在Studio 点击打开按钮。 + +### 配置文件 + +请先检查配置文件内容,包括: + +- 配置数据库连接字符串。请在`Http.API`项目下,`appsettings.json`中的`ConnectionStrings`中配置相关的连接字符串。 +- 在配置文件中`Components`的`Cache`配置,可选"Redis"或"Memory"。 + +你可参考以下配置说明: + +```json + "ConnectionStrings": { + // 可写数据库 + "CommandDb": "Server=localhost;Port=5432;Database=MyProjectName;User Id=postgres;Password=root;", + // 只读数据库 + "QueryDb": "Server=localhost;Port=5432;Database=MyProjectName;User Id=postgres;Password=root;", + // 缓存连接 + "Cache": "localhost:6379", + // 缓存前缀 + "CacheInstanceName": "Dev", + // 日志接收地址 + "Logging": "http://localhost:4317" + }, + + "Components": { + //Memory/Redis + "Cache": "Memory" + }, + // 邮件发送服务 + "Smtp": { + // smtp服务地址 + "Host": "", + "Port": 25, + // 发件人名称 + "DisplayName": "", + // 发件人地址 + "From": "", + // 验证用户名 + "Username": "", + // 验证密码 + "Password": "", + "EnableSsl": true + }, + "Key": { + // 默认用户密码 + "DefaultPassword": "Hello.Net" + }, +``` + +### 数据库迁移 + +模板默认使用了PostgreSQL。如果你使用其他数据库提供程序,你可以在`Application`项目`AppServiceCollectionExtensions.cs`中找到注入数d据库服务的方法。 + +请在`Http.API`项目下,使用`dotnet ef`命令生成迁移代码。或者直接运行`EFMigrations.ps1`脚本来执行,如: + +```powershell +.\EFMigrations.ps1 Init +``` + +### 运行项目 + +由于8.0添加了对`.NET Aspire`的支持,现在你有两种方式运行程序。 + +1. 运行AppHost项目,这是使用 Aspire 提供的方式运行,它将打开`Dashboard`。 +2. 直接运行`Http.API`项目,这将在浏览器中打开接口的`Swagger UI`。 + +你可以选择合适的方式运行程序。 diff --git "a/zh/ater.dry/\345\256\211\350\243\205.md" "b/zh/ater.dry/\345\256\211\350\243\205.md" index 5aef455..c8c2ef4 100644 --- "a/zh/ater.dry/\345\256\211\350\243\205.md" +++ "b/zh/ater.dry/\345\256\211\350\243\205.md" @@ -38,7 +38,7 @@ dry studio ``` > [!NOTE] -> 图形界面更适合使用`Ater.Web`模板创建的项目,有一定的约定配置才能正常使用。 +> 如果安装了新版本,请先执行`dry studio update`更新后再启动 Studio. ### 使用命令行 @@ -48,3 +48,9 @@ dry studio > [!TIP] > 使用命令行工具,可以不依赖项目结构去生成相关的代码!因为你可以指定具体的实体路径和代码输出的路径。 + +## 接下来 + +恭喜你已经成功安装并运行了工具。 + +现在,你可以使用该工具[创建](创建并运行项目.md)新的解决方案项目。 diff --git "a/zh/ater.dry/\346\246\202\350\277\260.md" "b/zh/ater.dry/\346\246\202\350\277\260.md" index ccadd26..207d4a5 100644 --- "a/zh/ater.dry/\346\246\202\350\277\260.md" +++ "b/zh/ater.dry/\346\246\202\350\277\260.md" @@ -36,6 +36,10 @@ dry 命令工具可以帮助开发者根据实体模型(.cs文件)生成常用 - 请求服务,`xxx.service.ts` - 接口模型,`xxx.ts` +## 作为智能助手 + +**dry**并不是简单的代码生成器,它通过分析和理解您的实体模型类,更具智慧的理解您的业务逻辑和实现意图,并基于此来生成相关基础代码,您无需从0开始。你所需要做的就是关注业务本身的模型设计。 + ## 项目模板支持 -可使用[ater.web.templates](https://www.nuget.org/packages/ater.web.templates)项目模板,建议配合使用! +工具集成了[ater.web.templates](https://www.nuget.org/packages/ater.web.templates)项目模板,你可以使用图形化界面直接创建解决方案! diff --git a/zh/ater.web/.order b/zh/ater.web/.order index 688b18a..cdea5e4 100644 --- a/zh/ater.web/.order +++ b/zh/ater.web/.order @@ -1,6 +1,6 @@ 概述 -快速入门 教程 +快速入门 约定和规范 示例 自定义 diff --git "a/zh/ater.web/\346\246\202\350\277\260.md" "b/zh/ater.web/\346\246\202\350\277\260.md" index c4849cc..3b393b0 100644 --- "a/zh/ater.web/\346\246\202\350\277\260.md" +++ "b/zh/ater.web/\346\246\202\350\277\260.md" @@ -48,12 +48,17 @@ dotnet new install ater.web.templates ## 使用 -安装完成后,可使用命令创建项目,也可通过VS的图形界面选择创建。 +安装完成后,可使用命令创建项目,也可通过VS的图形界面选择创建(建议)。 ```pwsh dotnet new atapi -n my-project ``` +转到`Http.API`项目中,在`appsetings.json`中配置数据库连接字符串。 + +> [!TIP] +> 模板默认使用`PostgreSQL`,请根据自己实际需求进行变更。 + ## 安装ater.dry (推荐) `ater.dry` 是一个智能代码辅助工具,主要提供代码生成功能,它可以分析您的实体,智能的帮助您生成相关的数据传输对象、数据库读写操作以及API接口。它以`dotnet`命令行工具提供,同时提供Web UI操作界面,能够节省大量的开发时间,强烈建议安装使用! diff --git a/zh/images/createSolution.jpg b/zh/images/createSolution.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0a69b600ce5bf40da8067d766468712d10531766 GIT binary patch literal 4917 zcmd^Cc{tSF+dngg(TItxQ6okX%9`C!b|Je&vMZ4#+lWDl7GxwP1|hqWEQRzWYu1#V z?7JBIGRr&9^8Vhp=ee%;_xnBX_5Ssq@AWX*+v5``F)bcH(yk;y3lY;$`o9!qJ+=_D1oELMCDE$6Oj=)Dj=aQDWjmIs;Vk0;BQS%o&_P%Mlodk93ZZ_2Jf|I=9`aiQe>4b`4o1%aXWWNi zIsl*$Iyxwfj-DO{qpb{~%>fuIJ=;-9b%uk+_HY4jcB%0A3`W5-CBJZ(bgiJJ9eg78 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 literal 0 HcmV?d00001 diff --git a/zh/images/createSolutionPage.jpg b/zh/images/createSolutionPage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..854d7dcb34651aa06105e2a7f26ae8bc2a0579a7 GIT binary patch literal 97080 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 z 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 g