From 59c567eb2c16221ddb1461d2620ebfd9473703e7 Mon Sep 17 00:00:00 2001 From: Rashiduddin Yoldash Date: Thu, 18 Apr 2019 22:47:37 +0300 Subject: [PATCH 01/57] IDistributedCache code documentation. --- .../Volo/Abp/Caching/CacheOptions.cs | 2 + .../Volo/Abp/Caching/DistributedCache.cs | 77 +++++++++++++++++++ .../Volo/Abp/Caching/IDistributedCache.cs | 76 ++++++++++++++++++ 3 files changed, 155 insertions(+) diff --git a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/CacheOptions.cs b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/CacheOptions.cs index 70f13c6b18..6be122be8f 100644 --- a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/CacheOptions.cs +++ b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/CacheOptions.cs @@ -10,11 +10,13 @@ namespace Volo.Abp.Caching /// Global Cache entry options. /// public DistributedCacheEntryOptions GlobalCacheEntryOptions { get; set; } + /// /// List of all cache configurators. /// (func argument:Name of cache) /// public List> CacheConfigurators { get; set; } //TODO list item use a configurator interface instead? + public CacheOptions() { CacheConfigurators = new List>(); diff --git a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs index 9ec056d4d7..e4d2c70ba5 100644 --- a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs +++ b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs @@ -12,6 +12,10 @@ using Volo.Abp.Threading; namespace Volo.Abp.Caching { + /// + /// Represents a distributed cache of type. + /// + /// The type of cache item being cached. public class DistributedCache : IDistributedCache where TCacheItem : class { @@ -57,6 +61,12 @@ namespace Volo.Abp.Caching SetDefaultOptions(); } + /// + /// Gets a cache item with the given key. If no cache item is found for the given key then returns null. + /// + /// The key of cached item to be retrieved from the cache. + /// Indicates to throw or hide the exceptions for the distributed cache. + /// The cache item, or null. public virtual TCacheItem Get( string key, bool? hideErrors = null) @@ -88,6 +98,13 @@ namespace Volo.Abp.Caching return Serializer.Deserialize(cachedBytes); } + /// + /// Gets a cache item with the given key. If no cache item is found for the given key then returns null. + /// + /// The key of cached item to be retrieved from the cache. + /// Indicates to throw or hide the exceptions for the distributed cache. + /// The for the task. + /// The cache item, or null. public virtual async Task GetAsync( string key, bool? hideErrors = null, @@ -123,6 +140,15 @@ namespace Volo.Abp.Caching return Serializer.Deserialize(cachedBytes); } + /// + /// Gets or Adds a cache item with the given key. If no cache item is found for the given key then adds a cache item + /// provided by delegate and returns the provided cache item. + /// + /// The key of cached item to be retrieved from the cache. + /// The factory delegate is used to provide the cache item when no cache item is found for the given . + /// The cache options for the factory delegate. + /// Indicates to throw or hide the exceptions for the distributed cache. + /// The cache item. public TCacheItem GetOrAdd( string key, Func factory, @@ -150,6 +176,16 @@ namespace Volo.Abp.Caching return value; } + /// + /// Gets or Adds a cache item with the given key. If no cache item is found for the given key then adds a cache item + /// provided by delegate and returns the provided cache item. + /// + /// The key of cached item to be retrieved from the cache. + /// The factory delegate is used to provide the cache item when no cache item is found for the given . + /// The cache options for the factory delegate. + /// Indicates to throw or hide the exceptions for the distributed cache. + /// The for the task. + /// The cache item. public async Task GetOrAddAsync( string key, Func> factory, @@ -179,6 +215,13 @@ namespace Volo.Abp.Caching return value; } + /// + /// Sets the cache item value for the provided key. + /// + /// The key of cached item to be retrieved from the cache. + /// The cache item value to set in the cache. + /// The cache options for the value. + /// Indicates to throw or hide the exceptions for the distributed cache. public virtual void Set( string key, TCacheItem value, @@ -207,6 +250,15 @@ namespace Volo.Abp.Caching } } + /// + /// Sets the cache item value for the provided key. + /// + /// The key of cached item to be retrieved from the cache. + /// The cache item value to set in the cache. + /// The cache options for the value. + /// Indicates to throw or hide the exceptions for the distributed cache. + /// The for the task. + /// The indicating that the operation is asynchronous. public virtual async Task SetAsync( string key, TCacheItem value, @@ -237,6 +289,11 @@ namespace Volo.Abp.Caching } } + /// + /// Refreshes the cache value of the given key, and resets its sliding expiration timeout. + /// + /// The key of cached item to be retrieved from the cache. + /// Indicates to throw or hide the exceptions for the distributed cache. public virtual void Refresh( string key, bool? hideErrors = null) @@ -259,6 +316,13 @@ namespace Volo.Abp.Caching } } + /// + /// Refreshes the cache value of the given key, and resets its sliding expiration timeout. + /// + /// The key of cached item to be retrieved from the cache. + /// Indicates to throw or hide the exceptions for the distributed cache. + /// The for the task. + /// The indicating that the operation is asynchronous. public virtual async Task RefreshAsync( string key, bool? hideErrors = null, @@ -282,6 +346,12 @@ namespace Volo.Abp.Caching } } + + /// + /// Removes the cache item for given key from cache. + /// + /// The key of cached item to be retrieved from the cache. + /// Indicates to throw or hide the exceptions for the distributed cache. public virtual void Remove( string key, bool? hideErrors = null) @@ -303,6 +373,13 @@ namespace Volo.Abp.Caching } } + /// + /// Removes the cache item for given key from cache. + /// + /// The key of cached item to be retrieved from the cache. + /// Indicates to throw or hide the exceptions for the distributed cache. + /// The for the task. + /// The indicating that the operation is asynchronous. public virtual async Task RemoveAsync( string key, bool? hideErrors = null, diff --git a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/IDistributedCache.cs b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/IDistributedCache.cs index 1567bfca30..23bd6f4cf2 100644 --- a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/IDistributedCache.cs +++ b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/IDistributedCache.cs @@ -6,20 +6,46 @@ using Microsoft.Extensions.Caching.Distributed; namespace Volo.Abp.Caching { + /// + /// Represents a distributed cache of type. + /// + /// The type of cache item being cached. public interface IDistributedCache where TCacheItem : class { + /// + /// Gets a cache item with the given key. If no cache item is found for the given key then returns null. + /// + /// The key of cached item to be retrieved from the cache. + /// Indicates to throw or hide the exceptions for the distributed cache. + /// The cache item, or null. TCacheItem Get( string key, bool? hideErrors = null ); + /// + /// Gets a cache item with the given key. If no cache item is found for the given key then returns null. + /// + /// The key of cached item to be retrieved from the cache. + /// Indicates to throw or hide the exceptions for the distributed cache. + /// The for the task. + /// The cache item, or null. Task GetAsync( [NotNull] string key, bool? hideErrors = null, CancellationToken token = default ); + /// + /// Gets or Adds a cache item with the given key. If no cache item is found for the given key then adds a cache item + /// provided by delegate and returns the provided cache item. + /// + /// The key of cached item to be retrieved from the cache. + /// The factory delegate is used to provide the cache item when no cache item is found for the given . + /// The cache options for the factory delegate. + /// Indicates to throw or hide the exceptions for the distributed cache. + /// The cache item. TCacheItem GetOrAdd( string key, Func factory, @@ -27,6 +53,16 @@ namespace Volo.Abp.Caching bool? hideErrors = null ); + /// + /// Gets or Adds a cache item with the given key. If no cache item is found for the given key then adds a cache item + /// provided by delegate and returns the provided cache item. + /// + /// The key of cached item to be retrieved from the cache. + /// The factory delegate is used to provide the cache item when no cache item is found for the given . + /// The cache options for the factory delegate. + /// Indicates to throw or hide the exceptions for the distributed cache. + /// The for the task. + /// The cache item. Task GetOrAddAsync( [NotNull] string key, Func> factory, @@ -35,6 +71,13 @@ namespace Volo.Abp.Caching CancellationToken token = default ); + /// + /// Sets the cache item value for the provided key. + /// + /// The key of cached item to be retrieved from the cache. + /// The cache item value to set in the cache. + /// The cache options for the value. + /// Indicates to throw or hide the exceptions for the distributed cache. void Set( string key, TCacheItem value, @@ -42,6 +85,15 @@ namespace Volo.Abp.Caching bool? hideErrors = null ); + /// + /// Sets the cache item value for the provided key. + /// + /// The key of cached item to be retrieved from the cache. + /// The cache item value to set in the cache. + /// The cache options for the value. + /// Indicates to throw or hide the exceptions for the distributed cache. + /// The for the task. + /// The indicating that the operation is asynchronous. Task SetAsync( [NotNull] string key, [NotNull] TCacheItem value, @@ -50,22 +102,46 @@ namespace Volo.Abp.Caching CancellationToken token = default ); + /// + /// Refreshes the cache value of the given key, and resets its sliding expiration timeout. + /// + /// The key of cached item to be retrieved from the cache. + /// Indicates to throw or hide the exceptions for the distributed cache. void Refresh( string key, bool? hideErrors = null ); + /// + /// Refreshes the cache value of the given key, and resets its sliding expiration timeout. + /// + /// The key of cached item to be retrieved from the cache. + /// Indicates to throw or hide the exceptions for the distributed cache. + /// The for the task. + /// The indicating that the operation is asynchronous. Task RefreshAsync( string key, bool? hideErrors = null, CancellationToken token = default ); + /// + /// Removes the cache item for given key from cache. + /// + /// The key of cached item to be retrieved from the cache. + /// Indicates to throw or hide the exceptions for the distributed cache. void Remove( string key, bool? hideErrors = null ); + /// + /// Removes the cache item for given key from cache. + /// + /// The key of cached item to be retrieved from the cache. + /// Indicates to throw or hide the exceptions for the distributed cache. + /// The for the task. + /// The indicating that the operation is asynchronous. Task RemoveAsync( string key, bool? hideErrors = null, From 2012aa96458713892e06c0361d48c6992bf7b7b6 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 19 Apr 2019 10:17:05 +0800 Subject: [PATCH 02/57] Outdated multi-tenant documentation. --- docs/en/Multi-Tenancy.md | 26 -------------------------- docs/zh-Hans/Multi-Tenancy.md | 26 -------------------------- 2 files changed, 52 deletions(-) diff --git a/docs/en/Multi-Tenancy.md b/docs/en/Multi-Tenancy.md index 118fea5c19..ee0648f483 100644 --- a/docs/en/Multi-Tenancy.md +++ b/docs/en/Multi-Tenancy.md @@ -90,32 +90,6 @@ namespace MyCompany.MyProject TODO: ... -### Volo.Abp.MultiTenancy Package - -Volo.Abp.MultiTenancy is the actual package that makes your application multi-tenant. Install it into your project using PMC: - -```` -Install-Package Volo.Abp.MultiTenancy -```` - -Then you can add **AbpMultiTenancyModule** dependency to your module: - -````C# -using Volo.Abp.Modularity; -using Volo.Abp.MultiTenancy; - -namespace MyCompany.MyProject -{ - [DependsOn(typeof(AbpMultiTenancyModule))] - public class MyModule : AbpModule - { - //... - } -} -```` - -> If you add AbpMultiTenancyModule dependency to your module, then you don't need to add AbpMultiTenancyModule dependency separately since AbpMultiTenancyModule already depends on it. - #### Determining Current Tenant The first thing for a multi-tenant application is to determine the current tenant on the runtime. Volo.Abp.MultiTenancy package only provides abstractions (named as tenant resolver) for determining the current tenant, however it does not have any implementation out of the box. diff --git a/docs/zh-Hans/Multi-Tenancy.md b/docs/zh-Hans/Multi-Tenancy.md index 6364428ec1..911803b1be 100644 --- a/docs/zh-Hans/Multi-Tenancy.md +++ b/docs/zh-Hans/Multi-Tenancy.md @@ -90,32 +90,6 @@ namespace MyCompany.MyProject TODO: ... -### Volo.Abp.MultiTenancy - -Volo.Abp.MultiTenancy 才是让你的程序实现多租户的真正的包.使用PMC将它安装到你的项目中: - -```` -Install-Package Volo.Abp.MultiTenancy -```` - -然后添加 **AbpMultiTenancyModule** 依赖到你的模块中: - -````C# -using Volo.Abp.Modularity; -using Volo.Abp.MultiTenancy; - -namespace MyCompany.MyProject -{ - [DependsOn(typeof(AbpMultiTenancyModule))] - public class MyModule : AbpModule - { - //... - } -} -```` - -> 如果你添加了AbpMultiTenancyModule依赖,就不需要再另外添加AbpMultiTenancyModule依赖了,因为AbpMultiTenancyModule已经依赖它了. - #### 确定当前租户 多租户的应用程序运行的时候首先要做的就是确定当前租户. From f4cb9353c770ed3fc560da1ee6f52600038c399b Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Fri, 19 Apr 2019 11:14:51 +0800 Subject: [PATCH 03/57] VoloDocs Chinese document --- docs/zh-Hans/Apps/VoloDocs.md | 174 ++++++++++++++++++ docs/zh-Hans/images/docs-create-project.jpg | Bin 0 -> 59282 bytes .../github-access-token-private-repo.jpg | Bin 0 -> 157083 bytes .../github-access-token-public-repo.jpg | Bin 0 -> 149440 bytes docs/zh-Hans/images/github-myusername.jpg | Bin 0 -> 146903 bytes ...vice-sample-update-database-authserver.png | Bin 0 -> 6526 bytes ...ervice-sample-update-database-products.png | Bin 0 -> 6475 bytes .../images/volodocs-iis-add-website.png | Bin 0 -> 13850 bytes .../images/volodocs-iis-application-pool.png | Bin 0 -> 6027 bytes 9 files changed, 174 insertions(+) create mode 100644 docs/zh-Hans/Apps/VoloDocs.md create mode 100644 docs/zh-Hans/images/docs-create-project.jpg create mode 100644 docs/zh-Hans/images/github-access-token-private-repo.jpg create mode 100644 docs/zh-Hans/images/github-access-token-public-repo.jpg create mode 100644 docs/zh-Hans/images/github-myusername.jpg create mode 100644 docs/zh-Hans/images/microservice-sample-update-database-authserver.png create mode 100644 docs/zh-Hans/images/microservice-sample-update-database-products.png create mode 100644 docs/zh-Hans/images/volodocs-iis-add-website.png create mode 100644 docs/zh-Hans/images/volodocs-iis-application-pool.png diff --git a/docs/zh-Hans/Apps/VoloDocs.md b/docs/zh-Hans/Apps/VoloDocs.md new file mode 100644 index 0000000000..f8cee69ad5 --- /dev/null +++ b/docs/zh-Hans/Apps/VoloDocs.md @@ -0,0 +1,174 @@ +# VoloDocs + +## 什么是VoloDocs? + +VoloDocs是一个跨平台的应用程序,帮助你简单的创建良好的文档与构建开发人员社区. 它借助Github集成简化了软件文档. 使用Github的强大功能进行版本控制,托管文档,并允许用户编译文档. + +## 主要功能 + +- 集成Github从仓库提供文档. +- 支持Markdown/HTML文档格式. +- 支持版本控制 (集成Github release). +- 支持多个项目. +- 允许用户在Github上编辑文档. +- 跨平台,可部署到Windows/Linux/macOS. + +## Github源码仓库 + +它是免费并且开源的. 你可以查看VoloDocs源码,我们也欢迎PR: + +https://github.com/abpframework/abp/tree/master/modules/docs + +## 下载 + +你可以在下面的链接下载VoloDocs release版: + +http://apps.abp.io/VoloDocs/VoloDocs.win-x64.zip - **Windows 64 bit** + +http://apps.abp.io/VoloDocs/VoloDocs.win-x86.zip - **Windows 32 bit** + +http://apps.abp.io/VoloDocs/VoloDocs.osx-x64.zip - **MacOS** + +http://apps.abp.io/VoloDocs/VoloDocs.linux-x64.zip - **Linux** + +上面所有的release都是自包含运行时的部署文件. 包含所有的第三方依赖与.Net Core Runtime,所以你不需要安装任何.Net Core SDK/Runtime. + +## 目录结构 + +解压 `VoloDocs.*.zip` 文件, 你会得到一个 `Web` 文件夹和 `Migrator` 文件夹. `Web` 文件夹中包含网站文件, `Migrator` 文件夹中包含构建数据库的应用程序. 在发布网站之前需要创建数据库或将现有的数据库更新到最新迁移. 如果这是你第一次安装VoloDocs, `Migrator` 会创建一个新数据库. 如果是升级已有的VoloDocs则会将数据库升级到最新的迁移. 使用 `Migrator` 你需要在 `appsettings.json` 文件中更改 `ConnectionString`. 参阅下一节了解如何配置VoloDocs应用程序. + +## 逐步部署 + +- ### 数据库迁移 + + 进入 `Migrator` 目录中创建或更新数据库. + + 打开 `appsettings.json` 文件设置连接字符串,如果你不清楚如何编写连接字符串,可以查看 https://www.connectionstrings.com/. + + 设置连接字符串后运行 `Migrate.bat` 如果是Linux或MacOS运行 `DotNet VoloDocs.Migrator.dll` 命令. + +- ### 配置网站 + + 进入 `Web` 目录下的VoloDocs文件夹. 打开 `appsettings.json` 文件设置连接字符串(与 `Migrator` 的 `appsettings.json` 相同). 你也可以为网站设置你想要的 `title`,它会显示在网站的左上角. 做完这些现在可以发布网站了. + +- ### 部署网站 + + 在上一步我们创建/更新了数据库(确保数据库链接字符串正确). + + - #### 部署到IIS + + - 移动 `Web` 文件夹到你的 `wwwroot ` 文件夹中. + - 重命名 `Web` 文件夹为 `VoloDocs` (现在我们有了 `C:\inetpub\wwwroot\VoloDocs`).![Add IIS Website](../images/volodocs-iis-add-website.png) + - 创建网站 `VoloDocs` 会自动创建相同名称的应用程序池. 打开 **应用程序池** 并双击 `VoloDocs` 应用程序池做以下设置 + - **.NET CLR 版本**: `无托管代码` + - **托管管道模式**: `集成` + + ![Add IIS Website](../images/volodocs-iis-application-pool.png) + + + + - 如果发生发生发现错误,表示未在服务器安装托管捆绑包. 请参阅文档 [this document](https://docs.microsoft.com/aspnet/core/host-and-deploy/iis/#install-the-net-core-hosting-bundle) 了解如何安装或[下载托管捆绑包](https://www.microsoft.com/net/permalink/dotnetcore-current-windows-runtime-bundle-installer). + + ``` + Handler "aspNetCore" has a bad module "AspNetCoreModuleV2" in its module list using IIS + ``` + + - 关于托管VoloDocs的更多信息,请参阅 [在IIS上托管ASP.NET Core应用程序的微软官方文档](https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis). + + - #### 部署到Azure + + 微软有一篇关于将ASP.NET Core应用程序部署到Azure App Service的文档. 我们建议你此[文档](https://docs.microsoft.com/en-us/azure/app-service/app-service-web-get-started-dotnet). + + - #### 使用命令行运行应用程序 + + 你可以从命令行运行应用程序,进入 `VoloDocs\Web` 文件夹并运行 `VoloDocs.Web.exe`,如果是Linux或MacOS运行 `DotNet VoloDocs.Web.dll` 命令. + +- ### 首次运行 + + 打开浏览器导航到你的网址. + + 首次运行网站,我们需要创建一个项目. + + #### 创建项目 + + 跳转到以下网址创建项目 + + - `http:///Account/Login?returnUrl=/Docs/Admin/Projects` + + ##### 默认凭据 + + 使用管理员身份登陆到管理后台,用户名密码如下: + + * **用户名**: `admin` + + * **密码**: `1q2w3E*` + + ##### 示例项目的定义 + + 以下是一个使用了Github源的示例项目信息. + + 配置VoloDocs展示存储在Github仓库中ABP Framework的文档. + + 这是ABP Framework文档在Github的链接: + + https://github.com/abpframework/abp/tree/master/docs/zh-Hans + + + + * **名称**: `ABP Framework` + + * **简称**: `abp` + + * **格式**: `markdown` + + * **默认文档名称**: `Index` + + * **文档导航名称**: `docs-nav.json` ([参见示例](https://github.com/abpframework/abp/blob/master/docs/zh-Hans/docs-nav.json)) + + * **最小版本**: *留空* *(隐藏之前的版本)* + + * **主网站网址**: `/` + + * **最新版本分支名称**: 留空 + + * **GitHub链接**: `https://github.com/abpframework/abp/tree/{version}/docs/zh-Hans/` + + * **GitHub访问令牌**: [参见如何创建Github访问令牌](#retrieving-github-access-token) + + * **GitHub用户名称**: [参见如何找到自己的Github用户名称](#learn-your-github-username) + + ![Creating a new project](../images/docs-create-project.jpg) + + ##### 创建访问令牌 + + 在Github页右上角找到 `Settings`,然后在左侧导航中点击 `Developer Settings`,在这里选择 `Personal access tokens`. 点击创建新token,输入名称与描述并勾选repo复选框. 如果已有访问令牌但已经忘记,可以选择[重新生成](https://github.com/settings/tokens/new). + + ###### 创建仅授权访问公共仓库的token + + 想要仅授权访问公共仓库,仅勾选 `public_repo` 就可以了,然后点击页面底部的 `Generate Token` 按钮完成操作. + + ![Retrieve GitHub Access Token for Public Repo](../images/github-access-token-public-repo.jpg) + + ###### 创建可访问私有仓库的token + + 想要授权访问私有仓库,勾选 `repo` 下的所有选项. 然后点击页面底部的 `Generate Token` 按钮完成操作. + + ![Retrieve GitHub Access Token for Private Repo](../images/github-access-token-private-repo.jpg) + + ###### 查看你的Github用户名称 + + 在Github页面右上角点击头像图片,"Signed in as ..." 后面就是你的用户名称 + + ![Your GitHub Username](../images/github-myusername.jpg) + + + +保存项目后转到网站根地址,你会看到文档已经正常显示. + +`http:///documents` + +### 发现问题? + +如果你在安装,使用时遇到问题或者发现bug,请发起issues与我们联系: + +https://github.com/abpframework/abp/issues/new \ No newline at end of file diff --git a/docs/zh-Hans/images/docs-create-project.jpg b/docs/zh-Hans/images/docs-create-project.jpg new file mode 100644 index 0000000000000000000000000000000000000000..742f5e307fedb57ee6ac170e9c4288748cfd9b9a GIT binary patch literal 59282 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

*?kqWjb2RfiItnl@){Q)+bTHJxDS-;S~%7RHI;h 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�aG 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 literal 0 HcmV?d00001 diff --git a/docs/zh-Hans/images/github-access-token-public-repo.jpg b/docs/zh-Hans/images/github-access-token-public-repo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b909c2cfe55657d69cce50fd5eac8d812f87da12 GIT binary patch literal 149440 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 DAt0j< literal 0 HcmV?d00001 diff --git a/docs/zh-Hans/images/github-myusername.jpg b/docs/zh-Hans/images/github-myusername.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4ac57eeed4007e3d8091353e4bdaa8c6e1e3b955 GIT binary patch literal 146903 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%0D?@wj`8g(yh?XJ29AD5^sck6^TX=K_{TLa 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 literal 0 HcmV?d00001 diff --git a/docs/zh-Hans/images/microservice-sample-update-database-authserver.png b/docs/zh-Hans/images/microservice-sample-update-database-authserver.png new file mode 100644 index 0000000000000000000000000000000000000000..689019b587e969b75d1d56a502c82b956b875f7e GIT binary patch literal 6526 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 EAD&H?cmMzZ literal 0 HcmV?d00001 diff --git a/docs/zh-Hans/images/microservice-sample-update-database-products.png b/docs/zh-Hans/images/microservice-sample-update-database-products.png new file mode 100644 index 0000000000000000000000000000000000000000..b49c2a8f8eff96d0c2fd144630b44fd3a5e38c3b GIT binary patch literal 6475 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�T#imp=82iGb<)gv@grU@4pHLcgf6ICQDAG!Yx{DF5uz zAQ;(pFvO_BvK=Af4!NBm~qI)q7J~+>Hi-|e)plp47dm>kz!+L`@g03Z4UxhSTrH?bj2a_!as=Pzxqe+ e{xAOk&;-%}Lhmv=r+4$;b)T#1fGU)2!u|_VV~j5V literal 0 HcmV?d00001 diff --git a/docs/zh-Hans/images/volodocs-iis-add-website.png b/docs/zh-Hans/images/volodocs-iis-add-website.png new file mode 100644 index 0000000000000000000000000000000000000000..878b3e8f0cc1fbd6942e07677da2521d925292e3 GIT binary patch literal 13850 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 KUuJae?*9UR#WT|Y literal 0 HcmV?d00001 diff --git a/docs/zh-Hans/images/volodocs-iis-application-pool.png b/docs/zh-Hans/images/volodocs-iis-application-pool.png new file mode 100644 index 0000000000000000000000000000000000000000..cc5186f50bc505656457b1002701d184b245056d GIT binary patch literal 6027 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 Date: Fri, 19 Apr 2019 11:39:56 +0800 Subject: [PATCH 04/57] Improve Entities document --- docs/en/Entities.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/en/Entities.md b/docs/en/Entities.md index a90b95d100..3a946461e7 100644 --- a/docs/en/Entities.md +++ b/docs/en/Entities.md @@ -22,7 +22,7 @@ public class Person : Entity } ``` -> If you do not want derive your entity from the base `Entity` class, you can directly implement `IEntity` interface. +> If you do not want to derive your entity from the base `Entity` class, you can directly implement `IEntity` interface. `Entity` class just defines an `Id` property with the given primary **key type**, which is `int` in the sample above. It can be other types like `string`, `Guid`, `long` or whatever you need. @@ -57,9 +57,9 @@ For the example above, the composite key is composed of `UserId` and `RoleId`. F Entities with composite keys should implement the `GetKeys()` method as shown above. -Notice that you also need to define keys of the entity in your **object-to-relational mapping** (ORM) configuration. +Notice that you also need to define keys of the entity in your **object-relational mapping** (ORM) configuration. -> Composite primary keys has a restriction with repositories. Since it has not known Id property, you can not use `IRepository` for these entities. However, you can always use `IRepository`. See repository documentation (TODO: link) for more. +> Composite primary keys has a restriction with repositories. Since it has not known Id property, you can not use `IRepository` for these entities. However, you can always use `IRepository`. See [repositories documentation](Repositories.md) for more. ### AggregateRoot Class @@ -67,7 +67,7 @@ Notice that you also need to define keys of the entity in your **object-to-relat `AggregateRoot` class extends the `Entity` class. So, it also has an `Id` property by default. -> Notice that ABP creates default repositories only for aggregate roots by default. However, it's possible to include all entities. See repository documentation (TODO: link) for more. +> Notice that ABP creates default repositories only for aggregate roots by default. However, it's possible to include all entities. See [repositories documentation](Repositories.md) for more. ABP does not force you to use aggregate roots, you can in fact use the `Entity` class as defined before. However, if you want to implement DDD and want to create aggregate root classes, there are some best practices you may want to consider: @@ -160,7 +160,7 @@ public class OrderLine : Entity > If you do not want to derive your aggregate root from the base `AggregateRoot` class, you can directly implement the `IAggregateRoot` interface. -`Order` is an **aggregate root** with `Guid` type `Id` property. It has a collection of `OrderLine` entities. `OrderLine` is another entity with a composite primary key (`OrderLine` and ` ProductId`). +`Order` is an **aggregate root** with `Guid` type `Id` property. It has a collection of `OrderLine` entities. `OrderLine` is another entity with a composite primary key (`OrderId` and ` ProductId`). While this example may not implement all the best practices of an aggregate root, it still follows good practices: From 8eff57d67ddee7ebe1979b42634ab2c63c4c6842 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Fri, 19 Apr 2019 16:29:17 +0300 Subject: [PATCH 05/57] Resolves #958 --- .../SettingManagementMainMenuContributor.cs | 31 +++++++++++++++---- .../ISettingPageContributor.cs | 2 ++ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs index 79ed300398..9e7427a221 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.DependencyInjection; +using System; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Options; using System.Linq; @@ -11,17 +12,22 @@ namespace Volo.Abp.SettingManagement.Web.Navigation { public class SettingManagementMainMenuContributor : IMenuContributor { - public Task ConfigureMenuAsync(MenuConfigurationContext context) + public async Task ConfigureMenuAsync(MenuConfigurationContext context) { if (context.Menu.Name != StandardMenus.Main) { - return Task.CompletedTask; + return; } + var settingManagementPageOptions = context.ServiceProvider.GetRequiredService>().Value; - if (!settingManagementPageOptions.Contributors.Any()) + var settingPageCreationContext = new SettingPageCreationContext(context.ServiceProvider); + if ( + !settingManagementPageOptions.Contributors.Any() + || !(await CheckAnyOfPagePermissionsGranted(settingManagementPageOptions, settingPageCreationContext)) + ) { - return Task.CompletedTask; + return; } var l = context.ServiceProvider.GetRequiredService>(); @@ -36,8 +42,21 @@ namespace Volo.Abp.SettingManagement.Web.Navigation icon: "fa fa-cog" ) ); + + } - return Task.CompletedTask; + private async Task CheckAnyOfPagePermissionsGranted( + SettingManagementPageOptions settingManagementPageOptions, + SettingPageCreationContext settingPageCreationContext) + { + foreach (var contributor in settingManagementPageOptions.Contributors) + { + if (await contributor.CheckPermissionsAsync(settingPageCreationContext)) + { + return true; + } + } + return false; } } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/ISettingPageContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/ISettingPageContributor.cs index e641ee2ade..f6260cc816 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/ISettingPageContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/ISettingPageContributor.cs @@ -5,5 +5,7 @@ namespace Volo.Abp.SettingManagement.Web.Pages.SettingManagement public interface ISettingPageContributor { Task ConfigureAsync(SettingPageCreationContext context); + + Task CheckPermissionsAsync(SettingPageCreationContext context); } } \ No newline at end of file From 6acca095f92c63db228bb30bcb8a93710abd57e0 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Fri, 19 Apr 2019 16:30:38 +0300 Subject: [PATCH 06/57] Update SettingManagementMainMenuContributor.cs --- .../Navigation/SettingManagementMainMenuContributor.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs index 9e7427a221..4bbb0f0bfd 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs @@ -23,8 +23,8 @@ namespace Volo.Abp.SettingManagement.Web.Navigation var settingManagementPageOptions = context.ServiceProvider.GetRequiredService>().Value; var settingPageCreationContext = new SettingPageCreationContext(context.ServiceProvider); if ( - !settingManagementPageOptions.Contributors.Any() - || !(await CheckAnyOfPagePermissionsGranted(settingManagementPageOptions, settingPageCreationContext)) + !settingManagementPageOptions.Contributors.Any() || + !(await CheckAnyOfPagePermissionsGranted(settingManagementPageOptions, settingPageCreationContext)) ) { return; From 7d74829f0334383e802c17ef2ff8243ab675ccfd Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Fri, 19 Apr 2019 22:11:54 +0300 Subject: [PATCH 07/57] Implement fluent validation as object validation contributor. --- .../AbpFluentValidationModule.cs | 8 -- .../FluentMethodInvocationValidator.cs | 55 -------- .../FluentObjectValidationContributor.cs | 41 ++++++ .../Abp/Validation/AbpValidationModule.cs | 21 ++- .../Abp/Validation/AbpValidationOptions.cs | 4 +- ...taAnnotationObjectValidationContributor.cs | 122 ++++++++++++++++++ .../Abp/Validation/DataAnnotationValidator.cs | 71 ---------- .../Validation/IDataAnnotationValidator.cs | 12 -- .../IObjectValidationContributor.cs | 7 + .../Volo/Abp/Validation/IObjectValidator.cs | 6 +- .../Abp/Validation/ObjectValidationContext.cs | 20 +++ .../Volo/Abp/Validation/ObjectValidator.cs | 92 ++++--------- .../Abp/Validation/ValidationInterceptor.cs | 33 ++--- ...plicationService_FluentValidation_Tests.cs | 3 +- .../ApplicationService_Validation_Tests.cs | 2 +- 15 files changed, 253 insertions(+), 244 deletions(-) delete mode 100644 framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/FluentMethodInvocationValidator.cs create mode 100644 framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/FluentObjectValidationContributor.cs create mode 100644 framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DataAnnotationObjectValidationContributor.cs delete mode 100644 framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DataAnnotationValidator.cs delete mode 100644 framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IDataAnnotationValidator.cs create mode 100644 framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IObjectValidationContributor.cs create mode 100644 framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ObjectValidationContext.cs diff --git a/framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/AbpFluentValidationModule.cs b/framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/AbpFluentValidationModule.cs index bbd5d2c888..ffe6162197 100644 --- a/framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/AbpFluentValidationModule.cs +++ b/framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/AbpFluentValidationModule.cs @@ -13,13 +13,5 @@ namespace Volo.Abp.FluentValidation { context.Services.AddConventionalRegistrar(new AbpFluentValidationConventionalRegistrar()); } - - public override void ConfigureServices(ServiceConfigurationContext context) - { - Configure(options => - { - options.MethodValidationContributors.Add(); - }); - } } } diff --git a/framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/FluentMethodInvocationValidator.cs b/framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/FluentMethodInvocationValidator.cs deleted file mode 100644 index 0868093181..0000000000 --- a/framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/FluentMethodInvocationValidator.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using FluentValidation; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Validation; - -namespace Volo.Abp.FluentValidation -{ - public class FluentMethodInvocationValidator : IMethodInvocationValidator, ITransientDependency - { - private readonly IServiceProvider _serviceProvider; - - public FluentMethodInvocationValidator( - IServiceProvider serviceProvider) - { - _serviceProvider = serviceProvider; - } - - public void Validate(MethodInvocationValidationContext context) - { - var validationResult = new AbpValidationResult(); - - foreach (var parameterValue in context.ParameterValues) - { - var serviceType = typeof(IValidator<>).MakeGenericType(parameterValue.GetType()); - var validator = _serviceProvider.GetService(serviceType) as IValidator; - if (validator == null) - { - continue; - } - - var result = validator.Validate(parameterValue); - if (!result.IsValid) - { - validationResult.Errors.AddRange( - result.Errors.Select( - error => - new ValidationResult(error.ErrorMessage) - ) - ); - } - } - - if (validationResult.Errors.Any()) - { - //TODO: How to localize messages? - throw new AbpValidationException( - "Method arguments are not valid! See ValidationErrors for details.", - context.Errors - ); - } - } - } -} diff --git a/framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/FluentObjectValidationContributor.cs b/framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/FluentObjectValidationContributor.cs new file mode 100644 index 0000000000..f926782e2d --- /dev/null +++ b/framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/FluentObjectValidationContributor.cs @@ -0,0 +1,41 @@ +using FluentValidation; +using System; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Validation; + +namespace Volo.Abp.FluentValidation +{ + public class FluentObjectValidationContributor : IObjectValidationContributor, ITransientDependency + { + private readonly IServiceProvider _serviceProvider; + + public FluentObjectValidationContributor( + IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + } + + public void AddErrors(ObjectValidationContext context) + { + var serviceType = typeof(IValidator<>).MakeGenericType(context.ValidatingObject.GetType()); + var validator = _serviceProvider.GetService(serviceType) as IValidator; + if (validator == null) + { + return; + } + + var result = validator.Validate(context.ValidatingObject); + if (!result.IsValid) + { + context.Errors.AddRange( + result.Errors.Select( + error => + new ValidationResult(error.ErrorMessage) + ) + ); + } + } + } +} diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/AbpValidationModule.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/AbpValidationModule.cs index f47594a88a..bb2d41f927 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/AbpValidationModule.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/AbpValidationModule.cs @@ -1,4 +1,6 @@ -using Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Modularity; namespace Volo.Abp.Validation @@ -8,13 +10,24 @@ namespace Volo.Abp.Validation public override void PreConfigureServices(ServiceConfigurationContext context) { context.Services.OnRegistred(ValidationInterceptorRegistrar.RegisterIfNeeded); + AutoAddObjectValidationContributors(context.Services); } - public override void ConfigureServices(ServiceConfigurationContext context) + private static void AutoAddObjectValidationContributors(IServiceCollection services) { - Configure(options => + var contributorTypes = new List(); + + services.OnRegistred(context => + { + if (typeof(IObjectValidationContributor).IsAssignableFrom(context.ImplementationType)) + { + contributorTypes.Add(context.ImplementationType); + } + }); + + services.Configure(options => { - options.MethodValidationContributors.Add(); + options.ObjectValidationContributors.AddIfNotContains(contributorTypes); }); } } diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/AbpValidationOptions.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/AbpValidationOptions.cs index c88449da1a..d9a690181e 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/AbpValidationOptions.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/AbpValidationOptions.cs @@ -8,12 +8,12 @@ namespace Volo.Abp.Validation { public List IgnoredTypes { get; } - public ITypeList MethodValidationContributors { get; set; } + public ITypeList ObjectValidationContributors { get; set; } public AbpValidationOptions() { IgnoredTypes = new List(); - MethodValidationContributors = new TypeList(); + ObjectValidationContributors = new TypeList(); } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DataAnnotationObjectValidationContributor.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DataAnnotationObjectValidationContributor.cs new file mode 100644 index 0000000000..5598fe7827 --- /dev/null +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DataAnnotationObjectValidationContributor.cs @@ -0,0 +1,122 @@ +using System.Collections; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using Microsoft.Extensions.Options; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Reflection; + +namespace Volo.Abp.Validation +{ + public class DataAnnotationObjectValidationContributor : IObjectValidationContributor, ITransientDependency + { + public const int MaxRecursiveParameterValidationDepth = 8; + + protected AbpValidationOptions Options { get; } + + public DataAnnotationObjectValidationContributor(IOptions options) + { + Options = options.Value; + } + + public void AddErrors(ObjectValidationContext context) + { + ValidateObjectRecursively(context.Errors, context.ValidatingObject, currentDepth: 1); + } + + protected virtual void ValidateObjectRecursively(List errors, object validatingObject, int currentDepth) + { + if (currentDepth > MaxRecursiveParameterValidationDepth) + { + return; + } + + if (validatingObject == null) + { + return; + } + + AddErrors(errors, validatingObject); + + //Validate items of enumerable + if (validatingObject is IEnumerable) + { + if (!(validatingObject is IQueryable)) + { + foreach (var item in (validatingObject as IEnumerable)) + { + ValidateObjectRecursively(errors, item, currentDepth + 1); + } + } + + return; + } + + var validatingObjectType = validatingObject.GetType(); + + //Do not recursively validate for primitive objects + if (TypeHelper.IsPrimitiveExtended(validatingObjectType)) + { + return; + } + + if (Options.IgnoredTypes.Any(t => t.IsInstanceOfType(validatingObject))) + { + return; + } + + var properties = TypeDescriptor.GetProperties(validatingObject).Cast(); + foreach (var property in properties) + { + if (property.Attributes.OfType().Any()) + { + continue; + } + + ValidateObjectRecursively(errors, property.GetValue(validatingObject), currentDepth + 1); + } + } + + public void AddErrors(List errors, object validatingObject) + { + var properties = TypeDescriptor.GetProperties(validatingObject).Cast(); + + foreach (var property in properties) + { + AddPropertyErrors(validatingObject, property, errors); + } + + if (validatingObject is IValidatableObject validatableObject) + { + errors.AddRange( + validatableObject.Validate(new ValidationContext(validatableObject)) + ); + } + } + + protected virtual void AddPropertyErrors(object validatingObject, PropertyDescriptor property, List errors) + { + var validationAttributes = property.Attributes.OfType().ToArray(); + if (validationAttributes.IsNullOrEmpty()) + { + return; + } + + var validationContext = new ValidationContext(validatingObject) + { + DisplayName = property.DisplayName, + MemberName = property.Name + }; + + foreach (var attribute in validationAttributes) + { + var result = attribute.GetValidationResult(property.GetValue(validatingObject), validationContext); + if (result != null) + { + errors.Add(result); + } + } + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DataAnnotationValidator.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DataAnnotationValidator.cs deleted file mode 100644 index 3333354937..0000000000 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DataAnnotationValidator.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System.Collections.Generic; -using System.ComponentModel; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using Volo.Abp.DependencyInjection; - -namespace Volo.Abp.Validation -{ - public class DataAnnotationValidator : IDataAnnotationValidator, ITransientDependency - { - public void Validate(object validatingObject) - { - var errors = GetErrors(validatingObject); - - if (errors.Any()) - { - throw new AbpValidationException( - "Object state is not valid! See ValidationErrors for details.", - errors - ); - } - } - - ///

- /// Gets all errors from properties for DataAnnotations attributes and IValidatableObject interface. - /// - public virtual List GetErrors(object validatingObject) - { - var errors = new List(); - var properties = TypeDescriptor.GetProperties(validatingObject).Cast(); - - foreach (var property in properties) - { - AddPropertyErrors(validatingObject, property, errors); - } - - if (validatingObject is IValidatableObject validatableObject) - { - errors.AddRange( - validatableObject.Validate(new ValidationContext(validatableObject)) - ); - } - - return errors; - } - - protected virtual void AddPropertyErrors(object validatingObject, PropertyDescriptor property, List errors) - { - var validationAttributes = property.Attributes.OfType().ToArray(); - if (validationAttributes.IsNullOrEmpty()) - { - return; - } - - var validationContext = new ValidationContext(validatingObject) - { - DisplayName = property.DisplayName, - MemberName = property.Name - }; - - foreach (var attribute in validationAttributes) - { - var result = attribute.GetValidationResult(property.GetValue(validatingObject), validationContext); - if (result != null) - { - errors.Add(result); - } - } - } - } -} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IDataAnnotationValidator.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IDataAnnotationValidator.cs deleted file mode 100644 index 6b14ff66b6..0000000000 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IDataAnnotationValidator.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; - -namespace Volo.Abp.Validation -{ - public interface IDataAnnotationValidator - { - void Validate(object validatingObject); - - List GetErrors(object validatingObject); - } -} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IObjectValidationContributor.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IObjectValidationContributor.cs new file mode 100644 index 0000000000..ca50901bcd --- /dev/null +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IObjectValidationContributor.cs @@ -0,0 +1,7 @@ +namespace Volo.Abp.Validation +{ + public interface IObjectValidationContributor + { + void AddErrors(ObjectValidationContext context); + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IObjectValidator.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IObjectValidator.cs index 8388605e62..0ce723bab8 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IObjectValidator.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IObjectValidator.cs @@ -11,6 +11,10 @@ namespace Volo.Abp.Validation bool allowNull = false ); - List GetErrors(object validatingObject, string name = null, bool allowNull = false); + List GetErrors( + object validatingObject, + string name = null, + bool allowNull = false + ); } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ObjectValidationContext.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ObjectValidationContext.cs new file mode 100644 index 0000000000..f2e9cd215c --- /dev/null +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ObjectValidationContext.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using JetBrains.Annotations; + +namespace Volo.Abp.Validation +{ + public class ObjectValidationContext + { + [NotNull] + public object ValidatingObject { get; } + + public List Errors { get; } + + public ObjectValidationContext([NotNull] object validatingObject) + { + ValidatingObject = Check.NotNull(validatingObject, nameof(validatingObject)); + Errors = new List(); + } + } +} diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ObjectValidator.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ObjectValidator.cs index 2d92af7221..8ff3998f7e 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ObjectValidator.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ObjectValidator.cs @@ -1,25 +1,21 @@ -using System.Collections; +using Microsoft.Extensions.Options; using System.Collections.Generic; -using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Linq; -using Microsoft.Extensions.Options; +using Microsoft.Extensions.DependencyInjection; using Volo.Abp.DependencyInjection; -using Volo.Abp.Reflection; namespace Volo.Abp.Validation { public class ObjectValidator : IObjectValidator, ITransientDependency { - private const int MaxRecursiveParameterValidationDepth = 8; + protected IHybridServiceScopeFactory ServiceScopeFactory { get; } + protected AbpValidationOptions Options { get; } - private readonly AbpValidationOptions _options; - private readonly IDataAnnotationValidator _dataAnnotationValidator; - - public ObjectValidator(IOptions options, IDataAnnotationValidator dataAnnotationValidator) + public ObjectValidator(IOptions options, IHybridServiceScopeFactory serviceScopeFactory) { - _dataAnnotationValidator = dataAnnotationValidator; - _options = options.Value; + ServiceScopeFactory = serviceScopeFactory; + Options = options.Value; } public virtual void Validate(object validatingObject, string name = null, bool allowNull = false) @@ -37,75 +33,35 @@ namespace Volo.Abp.Validation public virtual List GetErrors(object validatingObject, string name = null, bool allowNull = false) { - var errors = new List(); - - if (validatingObject == null && !allowNull) - { - errors.Add( - name == null - ? new ValidationResult("Given object is null!") - : new ValidationResult(name + " is null!", new[] { name }) - ); - - return errors; - } - - ValidateObjectRecursively(errors, validatingObject, currentDepth: 1); - - return errors; - } - - protected virtual void ValidateObjectRecursively(List errors, object validatingObject, int currentDepth) - { - if (currentDepth > MaxRecursiveParameterValidationDepth) - { - return; - } - if (validatingObject == null) { - return; - } - - errors.AddRange(_dataAnnotationValidator.GetErrors(validatingObject)); - - //Validate items of enumerable - if (validatingObject is IEnumerable) - { - if (!(validatingObject is IQueryable)) + if (allowNull) { - foreach (var item in (validatingObject as IEnumerable)) + return new List(); //TODO: Returning an array would be more performent + } + else + { + return new List { - ValidateObjectRecursively(errors, item, currentDepth + 1); - } + name == null + ? new ValidationResult("Given object is null!") + : new ValidationResult(name + " is null!", new[] {name}) + }; } - - return; } - var validatingObjectType = validatingObject.GetType(); + var context = new ObjectValidationContext(validatingObject); - //Do not recursively validate for primitive objects - if (TypeHelper.IsPrimitiveExtended(validatingObjectType)) + using (var scope = ServiceScopeFactory.CreateScope()) { - return; - } - - if (_options.IgnoredTypes.Any(t => t.IsInstanceOfType(validatingObject))) - { - return; - } - - var properties = TypeDescriptor.GetProperties(validatingObject).Cast(); - foreach (var property in properties) - { - if (property.Attributes.OfType().Any()) + foreach (var contributorType in Options.ObjectValidationContributors) { - continue; + var contributor = (IObjectValidationContributor) scope.ServiceProvider.GetRequiredService(contributorType); + contributor.AddErrors(context); } - - ValidateObjectRecursively(errors, property.GetValue(validatingObject), currentDepth + 1); } + + return context.Errors; } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ValidationInterceptor.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ValidationInterceptor.cs index 3b5d519c0c..c7fedec8db 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ValidationInterceptor.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ValidationInterceptor.cs @@ -1,7 +1,7 @@ -using System; -using System.Threading.Tasks; -using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using System; +using System.Threading.Tasks; using Volo.Abp.Aspects; using Volo.Abp.DependencyInjection; using Volo.Abp.DynamicProxy; @@ -10,13 +10,11 @@ namespace Volo.Abp.Validation { public class ValidationInterceptor : AbpInterceptor, ITransientDependency { - private readonly AbpValidationOptions _abpValidationOptions; - private readonly IServiceProvider _serviceProvider; + private readonly IMethodInvocationValidator _methodInvocationValidator; - public ValidationInterceptor(IServiceProvider serviceProvider, IOptions abpValidationOptions) + public ValidationInterceptor(IMethodInvocationValidator methodInvocationValidator) { - _serviceProvider = serviceProvider; - _abpValidationOptions = abpValidationOptions.Value; + _methodInvocationValidator = methodInvocationValidator; } public override void Intercept(IAbpMethodInvocation invocation) @@ -47,18 +45,13 @@ namespace Volo.Abp.Validation protected virtual void Validate(IAbpMethodInvocation invocation) { - foreach (var validationContributor in _abpValidationOptions.MethodValidationContributors) - { - var validator = (IMethodInvocationValidator) _serviceProvider.GetRequiredService(validationContributor); - - validator.Validate( - new MethodInvocationValidationContext( - invocation.TargetObject, - invocation.Method, - invocation.Arguments - ) - ); - } + _methodInvocationValidator.Validate( + new MethodInvocationValidationContext( + invocation.TargetObject, + invocation.Method, + invocation.Arguments + ) + ); } } } diff --git a/framework/test/Volo.Abp.FluentValidation.Tests/Volo/Abp/FluentValidation/ApplicationService_FluentValidation_Tests.cs b/framework/test/Volo.Abp.FluentValidation.Tests/Volo/Abp/FluentValidation/ApplicationService_FluentValidation_Tests.cs index 467a45a999..0cde05efd4 100644 --- a/framework/test/Volo.Abp.FluentValidation.Tests/Volo/Abp/FluentValidation/ApplicationService_FluentValidation_Tests.cs +++ b/framework/test/Volo.Abp.FluentValidation.Tests/Volo/Abp/FluentValidation/ApplicationService_FluentValidation_Tests.cs @@ -101,8 +101,7 @@ namespace Volo.Abp.FluentValidation output.ShouldBe("444"); } - - + [DependsOn(typeof(AbpAutofacModule))] [DependsOn(typeof(AbpFluentValidationModule))] public class TestModule : AbpModule diff --git a/framework/test/Volo.Abp.Validation.Tests/Volo/Abp/Validation/ApplicationService_Validation_Tests.cs b/framework/test/Volo.Abp.Validation.Tests/Volo/Abp/Validation/ApplicationService_Validation_Tests.cs index 3f7b49c8b4..8ff4aa8bfd 100644 --- a/framework/test/Volo.Abp.Validation.Tests/Volo/Abp/Validation/ApplicationService_Validation_Tests.cs +++ b/framework/test/Volo.Abp.Validation.Tests/Volo/Abp/Validation/ApplicationService_Validation_Tests.cs @@ -16,7 +16,7 @@ namespace Volo.Abp.Validation public ApplicationService_Validation_Tests() { - _myAppService = ServiceProvider.GetRequiredService(); + _myAppService = GetRequiredService(); } protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) From 6539209faaaf5edecbe08f031b332b20c39478d8 Mon Sep 17 00:00:00 2001 From: maliming Date: Sun, 21 Apr 2019 14:30:57 +0800 Subject: [PATCH 08/57] Update Dependency-Injection.md --- docs/zh-Hans/Dependency-Injection.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh-Hans/Dependency-Injection.md b/docs/zh-Hans/Dependency-Injection.md index b46c602c4c..381b77ec35 100644 --- a/docs/zh-Hans/Dependency-Injection.md +++ b/docs/zh-Hans/Dependency-Injection.md @@ -319,4 +319,4 @@ public class AppModule : AbpModule ### 请参阅 -* [ASP.NET Core依赖注入最佳实践,提示和技巧](https://medium.com/volosoft/asp-net-core-dependency-injection-best-practices-tips-tricks-c6e9c67f9d96) +* [ASP.NET Core依赖注入最佳实践,提示和技巧](https://cn.abp.io/blog/Abp/asp-net-core-dependency-injection-best-practices-tips-tricks) From d264ab5f204fbd1fbe02616c50b3250fce1a8f95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B6=9B?= Date: Mon, 22 Apr 2019 10:09:30 +0800 Subject: [PATCH 09/57] Add Chinese localization resource file for administration menu --- .../Abp/Ui/Navigation/Localization/Resource/zh-Hans.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/zh-Hans.json diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/zh-Hans.json b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/zh-Hans.json new file mode 100644 index 0000000000..bfac148af4 --- /dev/null +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/zh-Hans.json @@ -0,0 +1,6 @@ +{ + "culture": "zh-Hans", + "texts": { + "Menu:Administration": "管理" + } +} \ No newline at end of file From d94b8625ddae53a461b6d3024a4dd3c20faf2be7 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Mon, 22 Apr 2019 09:00:26 +0300 Subject: [PATCH 10/57] Resolves #1028 --- .../Services/AsyncCrudAppService.cs | 22 +++++++++---------- .../Application/Services/CrudAppService.cs | 22 +++++++++---------- .../Services/CrudAppServiceBase.cs | 10 ++++----- .../Application/Services/ICrudAppService.cs | 2 +- .../Application/PersonAppService_Tests.cs | 2 +- 5 files changed, 29 insertions(+), 29 deletions(-) diff --git a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AsyncCrudAppService.cs b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AsyncCrudAppService.cs index 36c4780672..6e3b476b5c 100644 --- a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AsyncCrudAppService.cs +++ b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AsyncCrudAppService.cs @@ -20,8 +20,8 @@ namespace Volo.Abp.Application.Services } } - public abstract class AsyncCrudAppService - : AsyncCrudAppService + public abstract class AsyncCrudAppService + : AsyncCrudAppService where TEntity : class, IEntity where TEntityDto : IEntityDto { @@ -32,8 +32,8 @@ namespace Volo.Abp.Application.Services } } - public abstract class AsyncCrudAppService - : AsyncCrudAppService + public abstract class AsyncCrudAppService + : AsyncCrudAppService where TEntity : class, IEntity where TEntityDto : IEntityDto { @@ -44,9 +44,9 @@ namespace Volo.Abp.Application.Services } } - public abstract class AsyncCrudAppService - : CrudAppServiceBase, - IAsyncCrudAppService + public abstract class AsyncCrudAppService + : CrudAppServiceBase, + IAsyncCrudAppService where TEntity : class, IEntity where TEntityDto : IEntityDto { @@ -66,9 +66,9 @@ namespace Volo.Abp.Application.Services return MapToEntityDto(entity); } - public virtual async Task> GetListAsync(TGetAllInput input) + public virtual async Task> GetListAsync(TGetListInput input) { - await CheckGetAllPolicyAsync(); + await CheckGetListPolicyAsync(); var query = CreateFilteredQuery(input); @@ -128,9 +128,9 @@ namespace Volo.Abp.Application.Services await CheckPolicyAsync(GetPolicyName); } - protected virtual async Task CheckGetAllPolicyAsync() + protected virtual async Task CheckGetListPolicyAsync() { - await CheckPolicyAsync(GetAllPolicyName); + await CheckPolicyAsync(GetListPolicyName); } protected virtual async Task CheckCreatePolicyAsync() diff --git a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppService.cs b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppService.cs index 8127e88f23..1fd6f869ff 100644 --- a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppService.cs +++ b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppService.cs @@ -17,8 +17,8 @@ namespace Volo.Abp.Application.Services } } - public abstract class CrudAppService - : CrudAppService + public abstract class CrudAppService + : CrudAppService where TEntity : class, IEntity where TEntityDto : IEntityDto { @@ -29,8 +29,8 @@ namespace Volo.Abp.Application.Services } } - public abstract class CrudAppService - : CrudAppService + public abstract class CrudAppService + : CrudAppService where TEntity : class, IEntity where TEntityDto : IEntityDto where TCreateInput : IEntityDto @@ -42,9 +42,9 @@ namespace Volo.Abp.Application.Services } } - public abstract class CrudAppService - : CrudAppServiceBase, - ICrudAppService + public abstract class CrudAppService + : CrudAppServiceBase, + ICrudAppService where TEntity : class, IEntity where TEntityDto : IEntityDto { @@ -62,9 +62,9 @@ namespace Volo.Abp.Application.Services return MapToEntityDto(entity); } - public virtual PagedResultDto GetAll(TGetAllInput input) + public virtual PagedResultDto GetList(TGetListInput input) { - CheckGetAllPolicy(); + CheckGetListPolicy(); var query = CreateFilteredQuery(input); @@ -122,9 +122,9 @@ namespace Volo.Abp.Application.Services CheckPolicy(GetPolicyName); } - protected virtual void CheckGetAllPolicy() + protected virtual void CheckGetListPolicy() { - CheckPolicy(GetAllPolicyName); + CheckPolicy(GetListPolicyName); } protected virtual void CheckCreatePolicy() diff --git a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppServiceBase.cs b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppServiceBase.cs index eb4c7a200f..4d878ad6c3 100644 --- a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppServiceBase.cs +++ b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppServiceBase.cs @@ -12,7 +12,7 @@ namespace Volo.Abp.Application.Services /// This is a common base class for CrudAppService and AsyncCrudAppService classes. /// Inherit either from CrudAppService or AsyncCrudAppService, not from this class. /// - public abstract class CrudAppServiceBase : + public abstract class CrudAppServiceBase : ApplicationService where TEntity : class, IEntity where TEntityDto : IEntityDto @@ -21,7 +21,7 @@ namespace Volo.Abp.Application.Services protected virtual string GetPolicyName { get; set; } - protected virtual string GetAllPolicyName { get; set; } + protected virtual string GetListPolicyName { get; set; } protected virtual string CreatePolicyName { get; set; } @@ -39,7 +39,7 @@ namespace Volo.Abp.Application.Services /// /// The query. /// The input. - protected virtual IQueryable ApplySorting(IQueryable query, TGetAllInput input) + protected virtual IQueryable ApplySorting(IQueryable query, TGetListInput input) { //Try to sort query if available var sortInput = input as ISortedResultRequest; @@ -66,7 +66,7 @@ namespace Volo.Abp.Application.Services /// /// The query. /// The input. - protected virtual IQueryable ApplyPaging(IQueryable query, TGetAllInput input) + protected virtual IQueryable ApplyPaging(IQueryable query, TGetListInput input) { //Try to use paging if available var pagedInput = input as IPagedResultRequest; @@ -93,7 +93,7 @@ namespace Volo.Abp.Application.Services /// methods. /// /// The input. - protected virtual IQueryable CreateFilteredQuery(TGetAllInput input) + protected virtual IQueryable CreateFilteredQuery(TGetListInput input) { return Repository; } diff --git a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/ICrudAppService.cs b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/ICrudAppService.cs index 9f06c63aea..7e8b96b9f8 100644 --- a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/ICrudAppService.cs +++ b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/ICrudAppService.cs @@ -29,7 +29,7 @@ namespace Volo.Abp.Application.Services { TEntityDto Get(TKey id); - PagedResultDto GetAll(TGetListInput input); + PagedResultDto GetList(TGetListInput input); TEntityDto Create(TCreateInput input); diff --git a/framework/test/Volo.Abp.TestApp.Tests/Volo/Abp/TestApp/Application/PersonAppService_Tests.cs b/framework/test/Volo.Abp.TestApp.Tests/Volo/Abp/TestApp/Application/PersonAppService_Tests.cs index 9dbfc8936e..c58b1b5f85 100644 --- a/framework/test/Volo.Abp.TestApp.Tests/Volo/Abp/TestApp/Application/PersonAppService_Tests.cs +++ b/framework/test/Volo.Abp.TestApp.Tests/Volo/Abp/TestApp/Application/PersonAppService_Tests.cs @@ -16,7 +16,7 @@ namespace Volo.Abp.TestApp.Application } [Fact] - public async Task GetAll() + public async Task GetList() { var people = await _peopleAppService.GetListAsync(new PagedAndSortedResultRequestDto()); people.Items.Count.ShouldBeGreaterThan(0); From 370aac6feb1bceb15c32808375835a09ea322b99 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 22 Apr 2019 15:01:24 +0800 Subject: [PATCH 11/57] Microsoft.AspNetCore.App package does not specify version. --- .../app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj | 2 +- .../applications/AuthServer.Host/AuthServer.Host.csproj | 2 +- .../BackendAdminAppGateway.Host.csproj | 2 +- .../gateways/InternalGateway.Host/InternalGateway.Host.csproj | 2 +- .../PublicWebSiteGateway.Host/PublicWebSiteGateway.Host.csproj | 2 +- .../BloggingService.Host/BloggingService.Host.csproj | 2 +- .../IdentityService.Host/IdentityService.Host.csproj | 2 +- .../ProductService.Host/ProductService.Host.csproj | 2 +- .../MyCompanyName.MyProjectName.DemoApp.csproj | 2 +- .../MyCompanyName.MyProjectName.Web.csproj | 2 +- .../MyCompanyName.MyProjectName.Host.csproj | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj b/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj index 040cfaf4a8..7b88e297f4 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj +++ b/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj @@ -16,7 +16,7 @@ - + diff --git a/samples/MicroserviceDemo/applications/AuthServer.Host/AuthServer.Host.csproj b/samples/MicroserviceDemo/applications/AuthServer.Host/AuthServer.Host.csproj index 0b938960f5..3fb01d55d7 100644 --- a/samples/MicroserviceDemo/applications/AuthServer.Host/AuthServer.Host.csproj +++ b/samples/MicroserviceDemo/applications/AuthServer.Host/AuthServer.Host.csproj @@ -12,7 +12,7 @@ - + diff --git a/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/BackendAdminAppGateway.Host.csproj b/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/BackendAdminAppGateway.Host.csproj index 28bb533c46..3ae6528058 100644 --- a/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/BackendAdminAppGateway.Host.csproj +++ b/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/BackendAdminAppGateway.Host.csproj @@ -12,7 +12,7 @@ - + diff --git a/samples/MicroserviceDemo/gateways/InternalGateway.Host/InternalGateway.Host.csproj b/samples/MicroserviceDemo/gateways/InternalGateway.Host/InternalGateway.Host.csproj index dafa931f24..7aa8f1eab1 100644 --- a/samples/MicroserviceDemo/gateways/InternalGateway.Host/InternalGateway.Host.csproj +++ b/samples/MicroserviceDemo/gateways/InternalGateway.Host/InternalGateway.Host.csproj @@ -12,7 +12,7 @@ - + diff --git a/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/PublicWebSiteGateway.Host.csproj b/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/PublicWebSiteGateway.Host.csproj index c04e6bdfaa..ecc2bcdfe5 100644 --- a/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/PublicWebSiteGateway.Host.csproj +++ b/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/PublicWebSiteGateway.Host.csproj @@ -12,7 +12,7 @@ - + diff --git a/samples/MicroserviceDemo/microservices/BloggingService.Host/BloggingService.Host.csproj b/samples/MicroserviceDemo/microservices/BloggingService.Host/BloggingService.Host.csproj index 88671a50f4..972fbd9d31 100644 --- a/samples/MicroserviceDemo/microservices/BloggingService.Host/BloggingService.Host.csproj +++ b/samples/MicroserviceDemo/microservices/BloggingService.Host/BloggingService.Host.csproj @@ -12,7 +12,7 @@ - + diff --git a/samples/MicroserviceDemo/microservices/IdentityService.Host/IdentityService.Host.csproj b/samples/MicroserviceDemo/microservices/IdentityService.Host/IdentityService.Host.csproj index 810c69a198..bc11e9759f 100644 --- a/samples/MicroserviceDemo/microservices/IdentityService.Host/IdentityService.Host.csproj +++ b/samples/MicroserviceDemo/microservices/IdentityService.Host/IdentityService.Host.csproj @@ -12,7 +12,7 @@ - + diff --git a/samples/MicroserviceDemo/microservices/ProductService.Host/ProductService.Host.csproj b/samples/MicroserviceDemo/microservices/ProductService.Host/ProductService.Host.csproj index ce42a3f22e..4cfac32df9 100644 --- a/samples/MicroserviceDemo/microservices/ProductService.Host/ProductService.Host.csproj +++ b/samples/MicroserviceDemo/microservices/ProductService.Host/ProductService.Host.csproj @@ -12,7 +12,7 @@ - + diff --git a/templates/module/app/MyCompanyName.MyProjectName.DemoApp/MyCompanyName.MyProjectName.DemoApp.csproj b/templates/module/app/MyCompanyName.MyProjectName.DemoApp/MyCompanyName.MyProjectName.DemoApp.csproj index 4e019c6d9b..c4456e9e69 100644 --- a/templates/module/app/MyCompanyName.MyProjectName.DemoApp/MyCompanyName.MyProjectName.DemoApp.csproj +++ b/templates/module/app/MyCompanyName.MyProjectName.DemoApp/MyCompanyName.MyProjectName.DemoApp.csproj @@ -5,7 +5,7 @@ - + diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj b/templates/mvc/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj index 4f44771362..fcbcc3104c 100644 --- a/templates/mvc/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj +++ b/templates/mvc/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj @@ -21,7 +21,7 @@ - + diff --git a/templates/service/host/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj b/templates/service/host/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj index f8b368d460..4e946bfb35 100644 --- a/templates/service/host/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj +++ b/templates/service/host/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj @@ -5,7 +5,7 @@ - + From b5b4c8216fc2aecc8a67306bc558e95ac8e7b075 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 22 Apr 2019 15:20:04 +0800 Subject: [PATCH 12/57] Translate the Domain-Driven-Design document --- docs/zh-Hans/Domain-Driven-Design.md | 33 ++++++++++++++++++++++++++++ docs/zh-Hans/docs-nav.json | 7 +++--- 2 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 docs/zh-Hans/Domain-Driven-Design.md diff --git a/docs/zh-Hans/Domain-Driven-Design.md b/docs/zh-Hans/Domain-Driven-Design.md new file mode 100644 index 0000000000..d4e51a152c --- /dev/null +++ b/docs/zh-Hans/Domain-Driven-Design.md @@ -0,0 +1,33 @@ +# 领取驱动设计 + +## 什么是DDD? + +ABP框架提供了**基础设施**使基础**DDD**的开发更易实现. DDD在[维基百科中的定义](https://zh.wikipedia.org/wiki/%E5%9F%9F%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91)如下: + +> **领域驱动设计(DDD)** 是一种通过将实现连接到持续进化的模型来满足复杂需求的软件开发方法. 领域驱动设计的前提是: +> +> - 把项目的主要重点放在核心领域和领域逻辑上 +> - 把复杂的设计放在领域模型上 +> - 发起技术专家和领域专家之间的创造性协作,以迭代方式完善解决特定领域问题的概念模型 + +### 分层 + +ABP框架遵循DDD原则和模式去实现分层应用程序模型,该模型由四个基本层组成: + +- **表示层**: 为用户提供接口. 使用*应用层*实现与用户交互. +- **应用层**: 表示层与领域层的中介,编排业务对象执行特定的应用程序任务. 使用应用程序逻辑实现用例. +- **领域层**: 包含业务对象以及业务规则. 是应用程序的核心. +- **基础设施层**: 提供通用的技术功能,支持更高的层,主要使用第三方类库. + +## 内容 + +* **领域层** + * [实体与聚合根](Entities.md) + * 值对象 + * [仓储](Repositories.md) + * 领域服务 + * 规约 +* **应用层** + * [应用服务](Application-Services.md) + * [数据传输对象(DTO)](Data-Transfer-Objects.md) + * 工作单元 \ No newline at end of file diff --git a/docs/zh-Hans/docs-nav.json b/docs/zh-Hans/docs-nav.json index 6b98655e85..8e88cf6921 100644 --- a/docs/zh-Hans/docs-nav.json +++ b/docs/zh-Hans/docs-nav.json @@ -67,8 +67,7 @@ "path": "Exception-Handling.md" }, { - "text": "验证", - "path": "Validation.md" + "text": "验证" }, { "text": "授权" @@ -145,6 +144,7 @@ }, { "text": "领域驱动设计", + "path": "Domain-Driven-Design.md", "items": [ { "text": "领域层", @@ -180,8 +180,7 @@ "text": "数据传输对象(DTO)" }, { - "text": "工作单元", - "path": "Unit-Of-Work.md" + "text": "工作单元" } ] } From 1e5506866880ee8047a0141f65ffff4d777423bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B6=9B?= Date: Tue, 23 Apr 2019 10:10:55 +0800 Subject: [PATCH 13/57] Add Chinese localization texts --- .../Localization/Resources/FeatureManagement/zh-Hans.json | 2 +- .../Resources/AbpPermissionManagement/zh-Hans.json | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/zh-Hans.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/zh-Hans.json index 25137f1ee3..765449637e 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/zh-Hans.json +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/zh-Hans.json @@ -1,6 +1,6 @@ { "culture": "zh-Hans", "texts": { - + "Features": "特性" } } \ No newline at end of file diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/zh-Hans.json b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/zh-Hans.json index 8384078b86..195d3254b6 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/zh-Hans.json +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/zh-Hans.json @@ -3,6 +3,8 @@ "texts": { "Permissions": "权限", "OnlyProviderPermissons": "只有这个提供商", - "All": "所有" + "All": "所有", + "SelectAllInAllTabs": "授予所有权限", + "SelectAllInThisTab": "全选" } } \ No newline at end of file From b85946581d3bdc88bde21198a75a77e18d95e55a Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 23 Apr 2019 10:26:42 +0800 Subject: [PATCH 14/57] Update zh-Hans.json --- .../AbpPermissionManagement/zh-Hans.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/zh-Hans.json b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/zh-Hans.json index 195d3254b6..11c52c43ed 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/zh-Hans.json +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/zh-Hans.json @@ -1,10 +1,10 @@ { - "culture": "zh-Hans", - "texts": { - "Permissions": "权限", - "OnlyProviderPermissons": "只有这个提供商", - "All": "所有", - "SelectAllInAllTabs": "授予所有权限", - "SelectAllInThisTab": "全选" - } - } \ No newline at end of file + "culture": "zh-Hans", + "texts": { + "Permissions": "权限", + "OnlyProviderPermissons": "只有这个提供商", + "All": "所有", + "SelectAllInAllTabs": "授予所有权限", + "SelectAllInThisTab": "全选" + } +} From 74d0b9e1c663a6df40e4c7f46eb4bd117765f771 Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 23 Apr 2019 10:27:04 +0800 Subject: [PATCH 15/57] Update zh-Hans.json --- .../Resources/FeatureManagement/zh-Hans.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/zh-Hans.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/zh-Hans.json index 765449637e..e9e1aab620 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/zh-Hans.json +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/zh-Hans.json @@ -1,6 +1,6 @@ { - "culture": "zh-Hans", - "texts": { - "Features": "特性" - } -} \ No newline at end of file + "culture": "zh-Hans", + "texts": { + "Features": "特性" + } +} From 571dd8f576cfca4e5ed4a096c2a0f2560699abc7 Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 23 Apr 2019 15:54:50 +0800 Subject: [PATCH 16/57] fix #1036 Modify the maximum length of DefaultConnectionString. --- .../TenantManagement/Tenants/ConnectionStringsModal.cshtml.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/ConnectionStringsModal.cshtml.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/ConnectionStringsModal.cshtml.cs index a2beeda27d..a4db743263 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/ConnectionStringsModal.cshtml.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/ConnectionStringsModal.cshtml.cs @@ -52,7 +52,7 @@ namespace Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants public bool UseSharedDatabase { get; set; } - [StringLength(TenantConnectionStringConsts.MaxNameLength)] + [StringLength(TenantConnectionStringConsts.MaxValueLength)] public string DefaultConnectionString { get; set; } } } From dc036343dc71762779d5bf1e42559b1c7817800f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B6=9B?= Date: Tue, 23 Apr 2019 17:11:33 +0800 Subject: [PATCH 17/57] Add Chinese localization resources --- .../Localization/Resources/VoloDocs/Web/zh-Hans.json | 9 +++++++++ modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj | 3 +-- .../Localization/Resources/Docs/Web/en.json | 3 ++- .../Localization/Resources/Docs/Web/zh-Hans.json | 7 ++++--- .../Localization/ApplicationContracts/zh-Hans.json | 1 + 5 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/zh-Hans.json diff --git a/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/zh-Hans.json b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/zh-Hans.json new file mode 100644 index 0000000000..c0a5d398ae --- /dev/null +++ b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/zh-Hans.json @@ -0,0 +1,9 @@ +{ + "culture": "zh-Hans", + "texts": { + "WelcomeVoloDocs": "欢迎使用VoloDocs!", + "NoProjectWarning": "当前没有定义的项目!", + "CreateYourFirstProject": "点击这里开始你的第一个项目", + "NoProject": "没有项目!" + } +} \ No newline at end of file diff --git a/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj b/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj index 7870968c45..75f91ed0ad 100644 --- a/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj +++ b/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj @@ -9,8 +9,7 @@ - - + diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/en.json b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/en.json index 8f8fdc0191..73747c3cf7 100644 --- a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/en.json +++ b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/en.json @@ -21,6 +21,7 @@ "DisplayName:MainWebsiteUrl": "Main web site URL", "DisplayName:LatestVersionBranchName": "Latest version branch name", "DisplayName:GitHubRootUrl": "GitHub root URL", - "DisplayName:GitHubAccessToken": "GitHub access token" + "DisplayName:GitHubAccessToken": "GitHub access token", + "DisplayName:GitHubUserAgent": "GitHub user agent" } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/zh-Hans.json b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/zh-Hans.json index 36bc285090..2b2911fad9 100644 --- a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/zh-Hans.json +++ b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/zh-Hans.json @@ -21,6 +21,7 @@ "DisplayName:MainWebsiteUrl": "主网站网址", "DisplayName:LatestVersionBranchName": "最新版本的分支名称", "DisplayName:GitHubRootUrl": "GitHub根网址", - "DisplayName:GitHubAccessToken": "GitHub访问令牌" - } - } \ No newline at end of file + "DisplayName:GitHubAccessToken": "GitHub访问令牌", + "DisplayName:GitHubUserAgent": "GitHub用户代理" + } +} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/Localization/ApplicationContracts/zh-Hans.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/Localization/ApplicationContracts/zh-Hans.json index e670d9f206..ca1c428755 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/Localization/ApplicationContracts/zh-Hans.json +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/Localization/ApplicationContracts/zh-Hans.json @@ -5,6 +5,7 @@ "Permission:Create": "创建", "Permission:Edit": "编辑", "Permission:Delete": "删除", + "Permission:ManageConnectionStrings": "管理连接字符串", "Permission:ManageFeatures": "管理功能" } } \ No newline at end of file From 31ec9921aa94a35b24dc74540d70e05c010dfc22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B6=9B?= Date: Tue, 23 Apr 2019 17:26:30 +0800 Subject: [PATCH 18/57] Fix bugs and add localization languages for docs module --- .../VoloDocsDbContextFactory.cs | 2 +- modules/docs/app/VoloDocs.Web/VoloDocsWebModule.cs | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocsDbContextFactory.cs b/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocsDbContextFactory.cs index 4daa15555b..927405f2a4 100644 --- a/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocsDbContextFactory.cs +++ b/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocsDbContextFactory.cs @@ -20,7 +20,7 @@ namespace VoloDocs.EntityFrameworkCore private static IConfigurationRoot BuildConfiguration() { var builder = new ConfigurationBuilder() - .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../VoloDocs/")) + .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../VoloDocs.Web/")) .AddJsonFile("appsettings.json", optional: false); return builder.Build(); diff --git a/modules/docs/app/VoloDocs.Web/VoloDocsWebModule.cs b/modules/docs/app/VoloDocs.Web/VoloDocsWebModule.cs index 9520a0e9df..cc018ddcc1 100644 --- a/modules/docs/app/VoloDocs.Web/VoloDocsWebModule.cs +++ b/modules/docs/app/VoloDocs.Web/VoloDocsWebModule.cs @@ -29,7 +29,7 @@ using Volo.Docs; using Volo.Docs.Admin; using Volo.Docs.Localization; using VoloDocs.EntityFrameworkCore; -using VoloDocs.Web.Utils; +using Localization.Resources.AbpUi; namespace VoloDocs.Web { @@ -107,14 +107,15 @@ namespace VoloDocs.Web Configure(options => { - options - .Languages - .Add(new LanguageInfo("en", "en", "English")); + + options.Languages.Add(new LanguageInfo("en", "en", "English")); + options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe")); + options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); options.Resources .Get() .AddBaseTypes(typeof(AbpValidationResource)) - .AddBaseTypes(typeof(AbpUiModule)) + .AddBaseTypes(typeof(AbpUiResource)) .AddVirtualJson("/Localization/Resources/VoloDocs/Web"); }); From ac99f470e154b45f6ee240780099d3cc023bed43 Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 23 Apr 2019 18:42:50 +0800 Subject: [PATCH 19/57] Fix AddBaseTypes method parameter name spelling mistakes. --- modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs | 5 +++-- modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs b/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs index ac7cc9e210..9071dee2d6 100644 --- a/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs +++ b/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Mvc.RazorPages; +using Localization.Resources.AbpUi; +using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.AspNetCore.Mvc.Localization; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; @@ -47,7 +48,7 @@ namespace Volo.Blogging options.Resources .Get() .AddBaseTypes(typeof(AbpValidationResource)) - .AddBaseTypes(typeof(AbpUiModule)) + .AddBaseTypes(typeof(AbpUiResource)) .AddVirtualJson("/Localization/Resources/Blogging/Web"); }); diff --git a/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs b/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs index dc917328b0..f23cae0436 100644 --- a/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs +++ b/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs @@ -1,4 +1,5 @@ -using Volo.Abp.AspNetCore.Mvc.Localization; +using Localization.Resources.AbpUi; +using Volo.Abp.AspNetCore.Mvc.Localization; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; using Volo.Abp.AutoMapper; using Volo.Abp.Localization; @@ -44,7 +45,7 @@ namespace Volo.Docs.Admin options.Resources .Get() .AddBaseTypes(typeof(AbpValidationResource)) - .AddBaseTypes(typeof(AbpUiModule)) + .AddBaseTypes(typeof(AbpUiResource)) .AddVirtualJson("/Localization/Resources/Docs/Web"); }); From 69abc246e60909a41cc885cf3a371042dc98515f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B6=9B?= Date: Wed, 24 Apr 2019 15:03:40 +0800 Subject: [PATCH 20/57] Ensure GitHub root url ends with forward slash in docs module If user forgot to put a forward slash at the end of github repo's root url (it's common for urls copied from the web browser's address bar), the code "rawRootUrl + documentName" will return an invalid url path. --- .../Volo/Docs/GitHub/Documents/GithubDocumentStore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs index 715306ae5c..b6bd194329 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs @@ -206,7 +206,7 @@ namespace Volo.Docs.GitHub.Documents { return rootUrl .Replace("github.com", "raw.githubusercontent.com") - .ReplaceFirst("/tree/", "/"); + .ReplaceFirst("/tree/", "/").EnsureEndsWith('/'); } } } \ No newline at end of file From 2b0f7f2e5341ff99d819c632fa38d22ee0672bab Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 24 Apr 2019 15:16:36 +0800 Subject: [PATCH 21/57] Update GithubDocumentStore.cs --- .../Volo/Docs/GitHub/Documents/GithubDocumentStore.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs index b6bd194329..2d65a17c68 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs @@ -206,7 +206,8 @@ namespace Volo.Docs.GitHub.Documents { return rootUrl .Replace("github.com", "raw.githubusercontent.com") - .ReplaceFirst("/tree/", "/").EnsureEndsWith('/'); + .ReplaceFirst("/tree/", "/") + .EnsureEndsWith('/'); } } -} \ No newline at end of file +} From b82ed5a7fa7628e3b7257485a8d56f0b00ca3e05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B6=9B?= Date: Wed, 24 Apr 2019 15:36:03 +0800 Subject: [PATCH 22/57] Fix incorrect project links on the home page in docs module --- modules/docs/app/VoloDocs.Web/Pages/Index.cshtml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/docs/app/VoloDocs.Web/Pages/Index.cshtml b/modules/docs/app/VoloDocs.Web/Pages/Index.cshtml index 6f6c083531..6b3c198eae 100644 --- a/modules/docs/app/VoloDocs.Web/Pages/Index.cshtml +++ b/modules/docs/app/VoloDocs.Web/Pages/Index.cshtml @@ -41,8 +41,8 @@ {
  • - @project.Name From 1385b0a6dd48ccb95d5f5d2c89d2bfe2be4d6c9e Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 24 Apr 2019 16:15:48 +0800 Subject: [PATCH 23/57] Update Index.cshtml --- modules/docs/app/VoloDocs.Web/Pages/Index.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/docs/app/VoloDocs.Web/Pages/Index.cshtml b/modules/docs/app/VoloDocs.Web/Pages/Index.cshtml index 6b3c198eae..4ac9f376ad 100644 --- a/modules/docs/app/VoloDocs.Web/Pages/Index.cshtml +++ b/modules/docs/app/VoloDocs.Web/Pages/Index.cshtml @@ -42,7 +42,7 @@
  • @project.Name From f47884485acca9520f2ed8b96d3b85506de9a9a0 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Wed, 24 Apr 2019 20:33:04 +0300 Subject: [PATCH 24/57] Render content_toolbar --- .../Themes/Basic/Layouts/Application.cshtml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml index 4864f2dafe..0ad0c76591 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml @@ -29,6 +29,10 @@ @(await Component.InvokeAsync()) +
    + @RenderSection("content_toolbar", false) +
    +
    @(await Component.InvokeAsync()) @RenderBody() From 034ab0b81ce10fae6ac3297f3c3d28a94679fddf Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Wed, 24 Apr 2019 20:36:22 +0300 Subject: [PATCH 25/57] Move content_toolbar into the container. --- .../Themes/Basic/Layouts/Application.cshtml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml index 0ad0c76591..5e3b66ffa7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml @@ -28,13 +28,12 @@ @(await Component.InvokeAsync()) - -
    - @RenderSection("content_toolbar", false) -
    - +
    @(await Component.InvokeAsync()) +
    + @RenderSection("content_toolbar", false) +
    @RenderBody()
    From 4bc6c8619b138afa8ed22e730b1f1cdde9ff0085 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Wed, 24 Apr 2019 20:38:43 +0300 Subject: [PATCH 26/57] Add margin --- .../Themes/Basic/Layouts/Application.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml index 5e3b66ffa7..1cd530d021 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml @@ -31,7 +31,7 @@
    @(await Component.InvokeAsync()) -
    +
    @RenderSection("content_toolbar", false)
    @RenderBody() From bbb7046925ee2c3979247d10eb4485d730248275 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B6=9B?= Date: Thu, 25 Apr 2019 11:01:09 +0800 Subject: [PATCH 27/57] UrlEncode post url within Redirect method in blogging module Error "InvalidOperationException: Invalid non-ASCII or control character in header" when url contains none ASCII characters, see AspNetCore issue [4919](https://github.com/aspnet/AspNetCore/issues/4919) --- .../src/Volo.Blogging.Web/Pages/Blog/Posts/New.cshtml.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/New.cshtml.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/New.cshtml.cs index 468d46decd..976f78b7d1 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/New.cshtml.cs +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/New.cshtml.cs @@ -54,7 +54,7 @@ namespace Volo.Blogging.Pages.Blog.Posts var postWithDetailsDto = await _postAppService.CreateAsync(ObjectMapper.Map(Post)); //TODO: Try Url.Page(...) - return Redirect(Url.Content($"~/blog/{blog.ShortName}/{postWithDetailsDto.Url}")); + return Redirect(Url.Content($"~/blog/{blog.ShortName}/{WebUtility.UrlEncode(postWithDetailsDto.Url)}")); } public class CreatePostViewModel From 1e2c0d1ee132a483e32855904d6c620f8bfd2158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B6=9B?= Date: Thu, 25 Apr 2019 11:19:19 +0800 Subject: [PATCH 28/57] UrlEncode blog short name within Redirect method --- .../src/Volo.Blogging.Web/Pages/Blog/Posts/New.cshtml.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/New.cshtml.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/New.cshtml.cs index 976f78b7d1..fe0a809d07 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/New.cshtml.cs +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/New.cshtml.cs @@ -54,7 +54,7 @@ namespace Volo.Blogging.Pages.Blog.Posts var postWithDetailsDto = await _postAppService.CreateAsync(ObjectMapper.Map(Post)); //TODO: Try Url.Page(...) - return Redirect(Url.Content($"~/blog/{blog.ShortName}/{WebUtility.UrlEncode(postWithDetailsDto.Url)}")); + return Redirect(Url.Content($"~/blog/{WebUtility.UrlEncode(blog.ShortName)}/{WebUtility.UrlEncode(postWithDetailsDto.Url)}")); } public class CreatePostViewModel From ab413f44cddfdb8cd909e8dc70c65e8b899f39db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B6=9B?= Date: Thu, 25 Apr 2019 11:47:54 +0800 Subject: [PATCH 29/57] UrlEncode parameters within Redirect method in post edit page model --- .../src/Volo.Blogging.Web/Pages/Blog/Posts/Edit.cshtml.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Edit.cshtml.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Edit.cshtml.cs index b35d07993d..2ccf8cff8f 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Edit.cshtml.cs +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Edit.cshtml.cs @@ -1,6 +1,7 @@ using System; using System.ComponentModel.DataAnnotations; using System.Linq; +using System.Net; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -61,7 +62,7 @@ namespace Volo.Blogging.Pages.Blog.Posts var editedPost = await _postAppService.UpdateAsync(Post.Id, post); var blog = await _blogAppService.GetAsync(editedPost.BlogId); - return Redirect(Url.Content($"~/blog/{blog.ShortName}/{editedPost.Url}")); + return Redirect(Url.Content($"~/blog/{WebUtility.UrlEncode(blog.ShortName)}/{WebUtility.UrlEncode(editedPost.Url)}")); } } From 41bfc39228b35c1da9474793b2be944b6451b498 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 25 Apr 2019 16:20:25 +0800 Subject: [PATCH 30/57] fix #1049 Make sure the directory exists before writing to the file. --- .../Volo/Blogging/Files/FileAppService.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/FileAppService.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/FileAppService.cs index d8b9273f0c..b188fe4c3e 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/FileAppService.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/FileAppService.cs @@ -23,6 +23,17 @@ namespace Volo.Blogging.Files { Check.NotNullOrWhiteSpace(name, nameof(name)); + if (!Directory.Exists(Options.FileUploadLocalFolder)) + { + Directory.CreateDirectory(Options.FileUploadLocalFolder); + return Task.FromResult( + new RawFileDto + { + Bytes = new byte[0] + } + ); + } + var filePath = Path.Combine(Options.FileUploadLocalFolder, name); return Task.FromResult( @@ -53,6 +64,11 @@ namespace Volo.Blogging.Files var uniqueFileName = GenerateUniqueFileName(Path.GetExtension(input.Name)); var filePath = Path.Combine(Options.FileUploadLocalFolder, uniqueFileName); + if (!Directory.Exists(Options.FileUploadLocalFolder)) + { + Directory.CreateDirectory(Options.FileUploadLocalFolder); + } + File.WriteAllBytes(filePath, input.Bytes); //TODO: Previously was using WriteAllBytesAsync, but it's only in .netcore. return Task.FromResult(new FileUploadOutputDto From 63653df2846b68e8068356fb1996b7bdc8a65ae0 Mon Sep 17 00:00:00 2001 From: CdLian <970433771@qq.com> Date: Thu, 25 Apr 2019 17:24:08 +0800 Subject: [PATCH 31/57] Update Entities.md --- docs/zh-Hans/Best-Practices/Entities.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/zh-Hans/Best-Practices/Entities.md b/docs/zh-Hans/Best-Practices/Entities.md index 637ecaef6d..fd709ef35f 100644 --- a/docs/zh-Hans/Best-Practices/Entities.md +++ b/docs/zh-Hans/Best-Practices/Entities.md @@ -64,7 +64,7 @@ public class Issue : FullAuditedAggregateRoot //使用Guid作为键/标识 protected Issue() { /* 此构造函数是提供给ORM用来从数据库中获取实体. - * - 无需初始化Lanels集合 + * - 无需初始化Labels集合 因为它会被来自数据库的值覆盖. - It's protected since proxying and deserialization tools 可能不适用于私有构造函数. @@ -150,4 +150,4 @@ public class IssueLabel : Entity ### 参考文献 * Effective Aggregate Design by Vaughn Vernon - http://dddcommunity.org/library/vernon_2011 \ No newline at end of file + http://dddcommunity.org/library/vernon_2011 From eab649325281b1688790128012e64631ed30430a Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 25 Apr 2019 21:01:33 +0800 Subject: [PATCH 32/57] fix #1051 new/edit post jquery validate problem. --- .../Volo.Blogging.Web/Pages/Blog/BloggingPage.cs | 5 +++++ .../src/Volo.Blogging.Web/Pages/Blog/Posts/edit.js | 14 ++++++++++++-- .../src/Volo.Blogging.Web/Pages/Blog/Posts/new.js | 14 +++++++++++--- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/BloggingPage.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/BloggingPage.cs index 03214d1ee3..88133e0e84 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/BloggingPage.cs +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/BloggingPage.cs @@ -55,6 +55,11 @@ namespace Volo.Blogging.Pages.Blog public IHtmlContent RenderMarkdownToHtml(string content) { + if(content.IsNullOrWhiteSpace()) + { + return new HtmlString(""); + } + byte[] bytes = Encoding.Default.GetBytes(content); var utf8Content = Encoding.UTF8.GetString(bytes); diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/edit.js b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/edit.js index 9fb4929d30..6b0dd9f02b 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/edit.js +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/edit.js @@ -1,4 +1,4 @@ -(function ($) { +$(function () { var $container = $("#edit-post-container"); var $editorContainer = $container.find(".edit-post-editor"); @@ -72,6 +72,8 @@ load: function () { $editorContainer.find(".loading-cover").remove(); $submitButton.prop("disabled", false); + $form.data("validator").settings.ignore = '.ignore'; + $editorContainer.find(':input').addClass('ignore'); } } }).data(editorDataKey); @@ -82,8 +84,16 @@ var postText = newPostEditor.getMarkdown(); $postTextInput.val(postText); + if (!$form.valid()) { + var validationResult = $form.validate(); + abp.message.warn(validationResult.errorList[0].message); //TODO: errors can be merged into lines. make sweetalert accept HTML. + e.preventDefault(); + return false; //for old browsers + } + $submitButton.buttonBusy(); $(this).off('submit').submit(); }); -})(jQuery); +}); + diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/new.js b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/new.js index 519d3f41f4..0c3e927264 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/new.js +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/new.js @@ -1,5 +1,4 @@ -var editor = null; -(function ($) { +$(function () { var $container = $("#qa-new-post-container"); var $editorContainer = $container.find(".new-post-editor"); @@ -72,6 +71,8 @@ load: function () { $editorContainer.find(".loading-cover").remove(); $submitButton.prop("disabled", false); + $form.data("validator").settings.ignore = '.ignore'; + $editorContainer.find(':input').addClass('ignore'); } } }).data(editorDataKey); @@ -82,6 +83,13 @@ var postText = newPostEditor.getMarkdown(); $postTextInput.val(postText); + if (!$form.valid()) { + var validationResult = $form.validate(); + abp.message.warn(validationResult.errorList[0].message); //TODO: errors can be merged into lines. make sweetalert accept HTML. + e.preventDefault(); + return false; //for old browsers + } + $submitButton.buttonBusy(); $(this).off('submit').submit(); }); @@ -113,4 +121,4 @@ } }); -})(jQuery); +}); From 5ad7d4237376e4353a745d6627ccdbc67e76f94d Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Thu, 25 Apr 2019 17:28:54 +0300 Subject: [PATCH 33/57] Fix dependency --- .../Volo/Abp/Users/AbpUsersDomainModule.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/AbpUsersDomainModule.cs b/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/AbpUsersDomainModule.cs index d3d6a01185..962c08c018 100644 --- a/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/AbpUsersDomainModule.cs +++ b/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/AbpUsersDomainModule.cs @@ -1,12 +1,12 @@ -using Volo.Abp.Modularity; -using Volo.Abp.Security; +using Volo.Abp.Domain; +using Volo.Abp.Modularity; namespace Volo.Abp.Users { [DependsOn( typeof(AbpUsersDomainSharedModule), typeof(AbpUsersAbstractionModule), - typeof(AbpSecurityModule) + typeof(AbpDddDomainModule) )] public class AbpUsersDomainModule : AbpModule { From d885d4e73b58d7a82b88cf79c7276423bbcf6044 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 26 Apr 2019 11:32:19 +0800 Subject: [PATCH 34/57] fix #1053 Show badge for public & default roles in the role list. --- .../Pages/Identity/Roles/index.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js index 476b484128..1f4c0e0316 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js +++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js @@ -57,7 +57,17 @@ } }, { - data: "name" + data: "name", + render: function (data, type, row) { + var name = '' + data + ''; + if (row.isDefault) { + name += 'Default'; + } + if (row.isPublic) { + name += 'Public'; + } + return name; + } } ] })); From dbbbe903050c284b24f7aa2405124c521c9f8881 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 26 Apr 2019 11:38:38 +0800 Subject: [PATCH 35/57] Localized role badge. --- .../src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js index 1f4c0e0316..385b53f257 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js +++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js @@ -61,10 +61,10 @@ render: function (data, type, row) { var name = '' + data + ''; if (row.isDefault) { - name += 'Default'; + name += '' + l('DisplayName:IsDefault') + ''; } if (row.isPublic) { - name += 'Public'; + name += '' + l('DisplayName:IsPublic') + ''; } return name; } From cabbb6f72c524f94ddcd028f70306db0af848c34 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Fri, 26 Apr 2019 09:08:59 +0300 Subject: [PATCH 36/57] Update README.md --- abp_io/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abp_io/README.md b/abp_io/README.md index 2095b52ef6..813329cbea 100644 --- a/abp_io/README.md +++ b/abp_io/README.md @@ -1,2 +1,2 @@ -## abp.op +## abp.io Source code of the official web site: https://abp.io From 731687036364e1c1a3fb739bfd8d5b4ac3de30dc Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 26 Apr 2019 14:39:24 +0800 Subject: [PATCH 37/57] ReflectionHelper add GetAllConstants method. Get all the constant values in the specified type (including the base type). --- .../Volo/Abp/Reflection/ReflectionHelper.cs | 37 +++++++ .../Abp/Reflection/ReflectionHelper_Tests.cs | 99 ++++++++++++++++++- 2 files changed, 134 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs index 1c4b162b21..27db5ae480 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs @@ -165,5 +165,42 @@ namespace Volo.Abp.Reflection property = currentType.GetProperty(properties.Last()); property.SetValue(obj, value); } + + + /// + /// Get all the constant values in the specified type (including the base type). + /// + /// + /// + public static string[] GetAllConstants(Type type) + { + var constants = new List(); + GetAllConstantsRecursively(constants, type, 1); + return constants.ToArray(); + } + + private static void GetAllConstantsRecursively(List constants, Type type, int currentDepth) + { + const int maxRecursiveParameterValidationDepth = 8; + + if (currentDepth > maxRecursiveParameterValidationDepth) + { + return; + } + + constants.AddRange( + type.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy) + .Where(x => x.IsLiteral && !x.IsInitOnly) + .Select(x => x.GetValue(null).ToString()) + ); + + var nestedTypes = type.GetNestedTypes(BindingFlags.Public); + + foreach (var nestedType in nestedTypes) + { + GetAllConstantsRecursively(constants, nestedType, currentDepth + 1); + } + } + } } diff --git a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/ReflectionHelper_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/ReflectionHelper_Tests.cs index 842940cfaf..cd2ec77b03 100644 --- a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/ReflectionHelper_Tests.cs +++ b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/ReflectionHelper_Tests.cs @@ -1,7 +1,102 @@ -namespace Volo.Abp.Reflection +using System.Linq; +using Shouldly; +using Xunit; + +namespace Volo.Abp.Reflection { public class ReflectionHelper_Tests { //TODO: ... + + + [Fact] + public void GetAllConstants_Test() + { + var constants = ReflectionHelper.GetAllConstants(typeof(BaseRole)); + + constants.ShouldNotBeEmpty(); + constants.Length.ShouldBe(1); + constants.ShouldContain(x => x == "DefaultBaseRoleName"); + } + + [Fact] + public void GetAllConstants_Inherit_Test() + { + var constants = ReflectionHelper.GetAllConstants(typeof(Roles)); + + constants.ShouldNotBeEmpty(); + constants.Length.ShouldBe(2); + constants.ShouldContain(x => x == "DefaultBaseRoleName"); + constants.ShouldContain(x => x == "DefaultRoleName"); + } + + + [Fact] + public void GetAllConstants_NestedTypes_Test() + { + var constants = ReflectionHelper.GetAllConstants(typeof(IdentityPermissions)); + + constants.ShouldNotBeEmpty(); + constants.Except(IdentityPermissions.GetAll()).Count().ShouldBe(0); + } } -} + + + public class BaseRole + { + public const string BaseRoleName = "DefaultBaseRoleName"; + } + + public class Roles : BaseRole + { + public const string RoleName = "DefaultRoleName"; + } + + public static class IdentityPermissions + { + public const string GroupName = "AbpIdentity"; + + public static class Roles + { + public const string Default = GroupName + ".Roles"; + public const string Create = Default + ".Create"; + public const string Update = Default + ".Update"; + public const string Delete = Default + ".Delete"; + public const string ManagePermissions = Default + ".ManagePermissions"; + } + + public static class Users + { + public const string Default = GroupName + ".Users"; + public const string Create = Default + ".Create"; + public const string Update = Default + ".Update"; + public const string Delete = Default + ".Delete"; + public const string ManagePermissions = Default + ".ManagePermissions"; + } + + public static class UserLookup + { + public const string Default = GroupName + ".UserLookup"; + } + + public static string[] GetAll() + { + return new[] + { + GroupName, + Roles.Default, + Roles.Create, + Roles.Update, + Roles.Delete, + Roles.ManagePermissions, + Users.Default, + Users.Create, + Users.Update, + Users.Delete, + Users.ManagePermissions, + UserLookup.Default + }; + } + } + +} \ No newline at end of file From d85857510459365310c3e5b869a407e1c7e8f1ac Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Fri, 26 Apr 2019 10:17:07 +0300 Subject: [PATCH 38/57] docs admin moved to administration menu --- .../Volo.Docs.Admin.Web/Navigation/DocsMenuContributor.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Navigation/DocsMenuContributor.cs b/modules/docs/src/Volo.Docs.Admin.Web/Navigation/DocsMenuContributor.cs index aff5fb1254..4097470c60 100644 --- a/modules/docs/src/Volo.Docs.Admin.Web/Navigation/DocsMenuContributor.cs +++ b/modules/docs/src/Volo.Docs.Admin.Web/Navigation/DocsMenuContributor.cs @@ -19,12 +19,15 @@ namespace Volo.Docs.Admin.Navigation private async Task ConfigureMainMenu(MenuConfigurationContext context) { + + var administrationMenu = context.Menu.GetAdministration(); + var authorizationService = context.ServiceProvider.GetRequiredService(); var l = context.ServiceProvider.GetRequiredService>(); var rootMenuItem = new ApplicationMenuItem(DocsMenuNames.GroupName, l["Menu:DocumentManagement"], icon: "fa fa-book"); - context.Menu.AddItem(rootMenuItem); + administrationMenu.AddItem(rootMenuItem); if (await authorizationService.IsGrantedAsync(DocsAdminPermissions.Projects.Default)) { From f43209c6a47794b2b1124e93d2a8916ead2f1cce Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 26 Apr 2019 15:18:41 +0800 Subject: [PATCH 39/57] Rename GetAllConstants to GetPublicConstantsRecursively. --- .../Volo/Abp/Reflection/ReflectionHelper.cs | 39 +++++++++---------- .../Abp/Reflection/ReflectionHelper_Tests.cs | 12 +++--- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs index 27db5ae480..b314ca6b84 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs @@ -172,35 +172,34 @@ namespace Volo.Abp.Reflection /// /// /// - public static string[] GetAllConstants(Type type) - { - var constants = new List(); - GetAllConstantsRecursively(constants, type, 1); - return constants.ToArray(); - } - - private static void GetAllConstantsRecursively(List constants, Type type, int currentDepth) + public static string[] GetPublicConstantsRecursively(Type type) { const int maxRecursiveParameterValidationDepth = 8; - if (currentDepth > maxRecursiveParameterValidationDepth) + var publicConstants = new List(); + + void Recursively(List constants, Type targetType, int currentDepth) { - return; - } + if (currentDepth > maxRecursiveParameterValidationDepth) + { + return; + } - constants.AddRange( - type.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy) + constants.AddRange(targetType.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy) .Where(x => x.IsLiteral && !x.IsInitOnly) - .Select(x => x.GetValue(null).ToString()) - ); + .Select(x => x.GetValue(null).ToString())); - var nestedTypes = type.GetNestedTypes(BindingFlags.Public); + var nestedTypes = targetType.GetNestedTypes(BindingFlags.Public); - foreach (var nestedType in nestedTypes) - { - GetAllConstantsRecursively(constants, nestedType, currentDepth + 1); + foreach (var nestedType in nestedTypes) + { + Recursively(constants, nestedType, currentDepth + 1); + } } - } + Recursively(publicConstants, type, 1); + + return publicConstants.ToArray(); + } } } diff --git a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/ReflectionHelper_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/ReflectionHelper_Tests.cs index cd2ec77b03..333ea2e84a 100644 --- a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/ReflectionHelper_Tests.cs +++ b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/ReflectionHelper_Tests.cs @@ -10,9 +10,9 @@ namespace Volo.Abp.Reflection [Fact] - public void GetAllConstants_Test() + public void GetPublicConstantsRecursively_Test() { - var constants = ReflectionHelper.GetAllConstants(typeof(BaseRole)); + var constants = ReflectionHelper.GetPublicConstantsRecursively(typeof(BaseRole)); constants.ShouldNotBeEmpty(); constants.Length.ShouldBe(1); @@ -20,9 +20,9 @@ namespace Volo.Abp.Reflection } [Fact] - public void GetAllConstants_Inherit_Test() + public void GetPublicConstantsRecursively_Inherit_Test() { - var constants = ReflectionHelper.GetAllConstants(typeof(Roles)); + var constants = ReflectionHelper.GetPublicConstantsRecursively(typeof(Roles)); constants.ShouldNotBeEmpty(); constants.Length.ShouldBe(2); @@ -32,9 +32,9 @@ namespace Volo.Abp.Reflection [Fact] - public void GetAllConstants_NestedTypes_Test() + public void GetPublicConstantsRecursively_NestedTypes_Test() { - var constants = ReflectionHelper.GetAllConstants(typeof(IdentityPermissions)); + var constants = ReflectionHelper.GetPublicConstantsRecursively(typeof(IdentityPermissions)); constants.ShouldNotBeEmpty(); constants.Except(IdentityPermissions.GetAll()).Count().ShouldBe(0); From 6b5893ff3dad3224a51a22847d392e9ddfd6e12b Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 26 Apr 2019 17:05:39 +0800 Subject: [PATCH 40/57] Lazy resolve services in the base classes. --- .../Mvc/UI/RazorPages/AbpPageModel.cs | 55 +++++++++++++++---- .../Volo/Abp/AspNetCore/Mvc/AbpController.cs | 49 +++++++++++++---- .../Services/ApplicationService.cs | 49 +++++++++++++---- .../Volo/Abp/Domain/Services/DomainService.cs | 28 +++++++++- 4 files changed, 146 insertions(+), 35 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/RazorPages/AbpPageModel.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/RazorPages/AbpPageModel.cs index 8fd16f5864..62258329ad 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/RazorPages/AbpPageModel.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/RazorPages/AbpPageModel.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; @@ -21,19 +22,43 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.RazorPages { public abstract class AbpPageModel : PageModel { - public IClock Clock { get; set; } + public IServiceProvider ServiceProvider { get; set; } + protected readonly object ServiceProviderLock = new object(); + protected TService LazyGetRequiredService(ref TService reference) + { + if (reference == null) + { + lock (ServiceProviderLock) + { + if (reference == null) + { + reference = ServiceProvider.GetRequiredService(); + } + } + } + + return reference; + } + + public IClock Clock => LazyGetRequiredService(ref _clock); + private IClock _clock; public AlertList Alerts => AlertManager.Alerts; - public IUnitOfWorkManager UnitOfWorkManager { get; set; } + public IUnitOfWorkManager UnitOfWorkManager => LazyGetRequiredService(ref _unitOfWorkManager); + private IUnitOfWorkManager _unitOfWorkManager; - public IObjectMapper ObjectMapper { get; set; } + public IObjectMapper ObjectMapper => LazyGetRequiredService(ref _objectMapper); + private IObjectMapper _objectMapper; - public IGuidGenerator GuidGenerator { get; set; } + public IGuidGenerator GuidGenerator => LazyGetRequiredService(ref _guidGenerator); + private IGuidGenerator _guidGenerator; - public ILoggerFactory LoggerFactory { get; set; } + public ILoggerFactory LoggerFactory => LazyGetRequiredService(ref _loggerFactory); + private ILoggerFactory _loggerFactory; - public IStringLocalizerFactory StringLocalizerFactory { get; set; } + public IStringLocalizerFactory StringLocalizerFactory => LazyGetRequiredService(ref _stringLocalizerFactory); + private IStringLocalizerFactory _stringLocalizerFactory; public IStringLocalizer L { @@ -56,17 +81,23 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.RazorPages protected Type LocalizationResourceType { get; set; } - public ICurrentUser CurrentUser { get; set; } + public ICurrentUser CurrentUser => LazyGetRequiredService(ref _currentUser); + private ICurrentUser _currentUser; - public ICurrentTenant CurrentTenant { get; set; } + public ICurrentTenant CurrentTenant => LazyGetRequiredService(ref _currentTenant); + private ICurrentTenant _currentTenant; - public ISettingProvider SettingProvider { get; set; } + public ISettingProvider SettingProvider => LazyGetRequiredService(ref _settingProvider); + private ISettingProvider _settingProvider; - public IModelStateValidator ModelValidator { get; set; } + public IModelStateValidator ModelValidator => LazyGetRequiredService(ref _modelValidator); + private IModelStateValidator _modelValidator; - public IAuthorizationService AuthorizationService { get; set; } + public IAuthorizationService AuthorizationService => LazyGetRequiredService(ref _authorizationService); + private IAuthorizationService _authorizationService; - public IAlertManager AlertManager { get; set; } + public IAlertManager AlertManager => LazyGetRequiredService(ref _alertManager); + private IAlertManager _alertManager; protected IUnitOfWork CurrentUnitOfWork => UnitOfWorkManager?.Current; diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpController.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpController.cs index a5d206cf55..f0ee490ed1 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpController.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpController.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Volo.Abp.Aspects; @@ -18,27 +19,55 @@ namespace Volo.Abp.AspNetCore.Mvc { public abstract class AbpController : Controller, IAvoidDuplicateCrossCuttingConcerns { - public IUnitOfWorkManager UnitOfWorkManager { get; set; } + public IServiceProvider ServiceProvider { get; set; } + protected readonly object ServiceProviderLock = new object(); + protected TService LazyGetRequiredService(ref TService reference) + { + if (reference == null) + { + lock (ServiceProviderLock) + { + if (reference == null) + { + reference = ServiceProvider.GetRequiredService(); + } + } + } + + return reference; + } + + public IUnitOfWorkManager UnitOfWorkManager => LazyGetRequiredService(ref _unitOfWorkManager); + private IUnitOfWorkManager _unitOfWorkManager; - public IObjectMapper ObjectMapper { get; set; } + public IObjectMapper ObjectMapper => LazyGetRequiredService(ref _objectMapper); + private IObjectMapper _objectMapper; - public IGuidGenerator GuidGenerator { get; set; } + public IGuidGenerator GuidGenerator => LazyGetRequiredService(ref _guidGenerator); + private IGuidGenerator _guidGenerator; - public ILoggerFactory LoggerFactory { get; set; } + public ILoggerFactory LoggerFactory => LazyGetRequiredService(ref _loggerFactory); + private ILoggerFactory _loggerFactory; - public ICurrentUser CurrentUser { get; set; } + public ICurrentUser CurrentUser => LazyGetRequiredService(ref _currentUser); + private ICurrentUser _currentUser; - public ICurrentTenant CurrentTenant { get; set; } + public ICurrentTenant CurrentTenant => LazyGetRequiredService(ref _currentTenant); + private ICurrentTenant _currentTenant; - public IAuthorizationService AuthorizationService { get; set; } + public IAuthorizationService AuthorizationService => LazyGetRequiredService(ref _authorizationService); + private IAuthorizationService _authorizationService; protected IUnitOfWork CurrentUnitOfWork => UnitOfWorkManager?.Current; - public IClock Clock { get; set; } + public IClock Clock => LazyGetRequiredService(ref _clock); + private IClock _clock; - public IModelStateValidator ModelValidator { get; set; } + public IModelStateValidator ModelValidator => LazyGetRequiredService(ref _modelValidator); + private IModelStateValidator _modelValidator; - public IFeatureChecker FeatureChecker { get; set; } + public IFeatureChecker FeatureChecker => LazyGetRequiredService(ref _featureChecker); + private IFeatureChecker _featureChecker; public List AppliedCrossCuttingConcerns { get; } = new List(); diff --git a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/ApplicationService.cs b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/ApplicationService.cs index 3b2bbc7582..909ad40940 100644 --- a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/ApplicationService.cs +++ b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/ApplicationService.cs @@ -1,5 +1,6 @@ using JetBrains.Annotations; using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; @@ -31,31 +32,59 @@ namespace Volo.Abp.Application.Services IAuditingEnabled, ITransientDependency { + public IServiceProvider ServiceProvider { get; set; } + protected readonly object ServiceProviderLock = new object(); + protected TService LazyGetRequiredService(ref TService reference) + { + if (reference == null) + { + lock (ServiceProviderLock) + { + if (reference == null) + { + reference = ServiceProvider.GetRequiredService(); + } + } + } + + return reference; + } + public static string[] CommonPostfixes { get; set; } = { "AppService", "ApplicationService", "Service" }; public List AppliedCrossCuttingConcerns { get; } = new List(); - public IUnitOfWorkManager UnitOfWorkManager { get; set; } + public IUnitOfWorkManager UnitOfWorkManager => LazyGetRequiredService(ref _unitOfWorkManager); + private IUnitOfWorkManager _unitOfWorkManager; - public IObjectMapper ObjectMapper { get; set; } + public IObjectMapper ObjectMapper => LazyGetRequiredService(ref _objectMapper); + private IObjectMapper _objectMapper; public IGuidGenerator GuidGenerator { get; set; } - public ILoggerFactory LoggerFactory { get; set; } + public ILoggerFactory LoggerFactory => LazyGetRequiredService(ref _loggerFactory); + private ILoggerFactory _loggerFactory; - public ICurrentTenant CurrentTenant { get; set; } + public ICurrentTenant CurrentTenant => LazyGetRequiredService(ref _currentTenant); + private ICurrentTenant _currentTenant; - public ICurrentUser CurrentUser { get; set; } + public ICurrentUser CurrentUser => LazyGetRequiredService(ref _currentUser); + private ICurrentUser _currentUser; - public ISettingProvider SettingProvider { get; set; } + public ISettingProvider SettingProvider => LazyGetRequiredService(ref _settingProvider); + private ISettingProvider _settingProvider; - public IClock Clock { get; set; } + public IClock Clock => LazyGetRequiredService(ref _clock); + private IClock _clock; - public IAuthorizationService AuthorizationService { get; set; } + public IAuthorizationService AuthorizationService => LazyGetRequiredService(ref _authorizationService); + private IAuthorizationService _authorizationService; - public IFeatureChecker FeatureChecker { get; set; } + public IFeatureChecker FeatureChecker => LazyGetRequiredService(ref _featureChecker); + private IFeatureChecker _featureChecker; - public IStringLocalizerFactory StringLocalizerFactory { get; set; } + public IStringLocalizerFactory StringLocalizerFactory => LazyGetRequiredService(ref _stringLocalizerFactory); + private IStringLocalizerFactory _stringLocalizerFactory; public IStringLocalizer L => _localizer ?? (_localizer = StringLocalizerFactory.Create(LocalizationResource)); private IStringLocalizer _localizer; diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Services/DomainService.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Services/DomainService.cs index ea94690d61..14e8a64131 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Services/DomainService.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Services/DomainService.cs @@ -1,4 +1,5 @@ using System; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Volo.Abp.Guids; @@ -9,13 +10,34 @@ namespace Volo.Abp.Domain.Services { public abstract class DomainService : IDomainService { - public IClock Clock { get; set; } + public IServiceProvider ServiceProvider { get; set; } + protected readonly object ServiceProviderLock = new object(); + protected TService LazyGetRequiredService(ref TService reference) + { + if (reference == null) + { + lock (ServiceProviderLock) + { + if (reference == null) + { + reference = ServiceProvider.GetRequiredService(); + } + } + } + + return reference; + } + + public IClock Clock => LazyGetRequiredService(ref _clock); + private IClock _clock; public IGuidGenerator GuidGenerator { get; set; } - public ILoggerFactory LoggerFactory { get; set; } + public ILoggerFactory LoggerFactory => LazyGetRequiredService(ref _loggerFactory); + private ILoggerFactory _loggerFactory; - public ICurrentTenant CurrentTenant { get; set; } + public ICurrentTenant CurrentTenant => LazyGetRequiredService(ref _currentTenant); + private ICurrentTenant _currentTenant; protected ILogger Logger => _lazyLogger.Value; private Lazy _lazyLogger => new Lazy(() => LoggerFactory?.CreateLogger(GetType().FullName) ?? NullLogger.Instance, true); From 190886d514fff226f76542c16028f0ac15534217 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B6=9B?= Date: Fri, 26 Apr 2019 17:15:15 +0800 Subject: [PATCH 41/57] Add languages menu and localization texts for blogging module --- .../Volo.BloggingTestApp/BloggingTestAppModule.cs | 2 +- .../src/Volo.Blogging.Web/BloggingWebModule.cs | 3 +++ .../Localization/Resources/Blogging/Web/en.json | 8 +++++++- .../Localization/Resources/Blogging/Web/pt-BR.json | 8 +++++++- .../Localization/Resources/Blogging/Web/tr.json | 8 +++++++- .../Localization/Resources/Blogging/Web/zh-Hans.json | 12 +++++++++--- 6 files changed, 34 insertions(+), 7 deletions(-) diff --git a/modules/blogging/app/Volo.BloggingTestApp/BloggingTestAppModule.cs b/modules/blogging/app/Volo.BloggingTestApp/BloggingTestAppModule.cs index 248d1433cc..84ed5d1910 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/BloggingTestAppModule.cs +++ b/modules/blogging/app/Volo.BloggingTestApp/BloggingTestAppModule.cs @@ -98,7 +98,7 @@ namespace Volo.BloggingTestApp options.CustomSchemaIds(type => type.FullName); }); - var cultures = new List { new CultureInfo("en"), new CultureInfo("tr") }; + var cultures = new List { new CultureInfo("en"), new CultureInfo("tr"),new CultureInfo("zh-Hans") }; Configure(options => { options.DefaultRequestCulture = new RequestCulture("en"); diff --git a/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs b/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs index 9071dee2d6..20678ddc37 100644 --- a/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs +++ b/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs @@ -45,6 +45,9 @@ namespace Volo.Blogging Configure(options => { + options.Languages.Add(new LanguageInfo("en", "en", "English")); + options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe")); + options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); options.Resources .Get() .AddBaseTypes(typeof(AbpValidationResource)) diff --git a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/en.json b/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/en.json index 444c3d80af..b84b1f2483 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/en.json +++ b/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/en.json @@ -36,6 +36,12 @@ "CoverImage": "Cover Image", "CreateANewPost": "Create A New Post", "CreateANewBlog": "Create A New Blog", - "WhatIsNew": "What is new?" + "WhatIsNew": "What is new?", + "Name": "Name", + "ShortName": "Short Name", + "CreationTime": "Creation Time", + "Description": "Description", + "Blogs": "Blogs", + "Tags": "Tags" } } \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/pt-BR.json b/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/pt-BR.json index cf98e56b06..62416f49a5 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/pt-BR.json +++ b/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/pt-BR.json @@ -36,6 +36,12 @@ "CoverImage": "Imagem de Capa", "CreateANewPost": "Criar uma nova Postagem", "CreateANewBlog": "Criar um novo Blog", - "WhatIsNew": "O que há de novo?" + "WhatIsNew": "O que há de novo?", + "Name": "Nome", + "ShortName": "Nome Curto", + "CreationTime": "Hora da criação", + "Description": "Descrição", + "Blogs": "Blogs", + "Tags": "Etiquetas" } } \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/tr.json b/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/tr.json index dc5df7f0d0..bb8b23f9d2 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/tr.json +++ b/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/tr.json @@ -36,6 +36,12 @@ "CoverImage": "Kapak resmi", "CreateANewPost": "Yeni Yazı oluştur", "CreateANewBlog": "Yeni Blog Ekle", - "WhatIsNew": "Yeniler" + "WhatIsNew": "Yeniler", + "Name": "İsim", + "ShortName": "Kısa isim", + "CreationTime": "Yaratma zamanı", + "Description": "Açıklama", + "Blogs": "Bloglar", + "Tags": "Etiketler" } } \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/zh-Hans.json b/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/zh-Hans.json index a67e325497..2ea614b648 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/zh-Hans.json +++ b/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/zh-Hans.json @@ -36,6 +36,12 @@ "CoverImage": "封面图", "CreateANewPost": "创建一个新帖子", "CreateANewBlog": "创建一个新博客", - "WhatIsNew": "最新消息" - } - } \ No newline at end of file + "WhatIsNew": "最新消息", + "Name": "名称", + "ShortName": "简称", + "CreationTime": "创建时间", + "Description": "描述", + "Blogs": "博客", + "Tags": "标签" + } +} \ No newline at end of file From bb8edb70fd038c7a9273fcde61ea690e5424e97c Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 26 Apr 2019 17:43:23 +0800 Subject: [PATCH 42/57] Use GetPublicConstantsRecursively in Permissions.GetAll. --- .../Volo/Blogging/BloggingPermissions.cs | 26 +++---------------- .../Volo/Docs/Admin/DocsAdminPermissions.cs | 13 +++------- .../Volo/Abp/Identity/IdentityPermissions.cs | 20 +++----------- .../TenantManagementPermissions.cs | 15 +++-------- .../Permissions/BookStorePermissions.cs | 3 ++- .../ProductManagementPermissions.cs | 13 +++------- .../MyProjectName/MyProjectNamePermissions.cs | 9 +++---- .../Permissions/MyProjectNamePermissions.cs | 3 ++- .../MyProjectName/MyProjectNamePermissions.cs | 9 +++---- 9 files changed, 32 insertions(+), 79 deletions(-) diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/BloggingPermissions.cs b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/BloggingPermissions.cs index e73dc334da..fae85acf88 100644 --- a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/BloggingPermissions.cs +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/BloggingPermissions.cs @@ -1,4 +1,6 @@ -namespace Volo.Blogging +using Volo.Abp.Reflection; + +namespace Volo.Blogging { public class BloggingPermissions { @@ -39,27 +41,7 @@ public static string[] GetAll() { - return new[] - { - GroupName, - Blogs.Default, - Blogs.Management, - Blogs.Delete, - Blogs.Update, - Blogs.Create, - Posts.Default, - Posts.Delete, - Posts.Update, - Posts.Create, - Tags.Default, - Tags.Delete, - Tags.Update, - Tags.Create, - Comments.Default, - Comments.Delete, - Comments.Update, - Comments.Create - }; + return ReflectionHelper.GetPublicConstantsRecursively(typeof(BloggingPermissions)); } } } diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/DocsAdminPermissions.cs b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/DocsAdminPermissions.cs index 565b70c7f5..341f4c5819 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/DocsAdminPermissions.cs +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/DocsAdminPermissions.cs @@ -1,4 +1,6 @@ -namespace Volo.Docs.Admin +using Volo.Abp.Reflection; + +namespace Volo.Docs.Admin { public class DocsAdminPermissions { @@ -14,14 +16,7 @@ public static string[] GetAll() { - return new[] - { - GroupName, - Projects.Default, - Projects.Delete, - Projects.Update, - Projects.Create, - }; + return ReflectionHelper.GetPublicConstantsRecursively(typeof(DocsAdminPermissions)); } } } diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IdentityPermissions.cs b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IdentityPermissions.cs index 339122c2a8..e22869295f 100644 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IdentityPermissions.cs +++ b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IdentityPermissions.cs @@ -1,4 +1,6 @@ -namespace Volo.Abp.Identity +using Volo.Abp.Reflection; + +namespace Volo.Abp.Identity { public static class IdentityPermissions { @@ -29,21 +31,7 @@ public static string[] GetAll() { - return new[] - { - GroupName, - Roles.Default, - Roles.Create, - Roles.Update, - Roles.Delete, - Roles.ManagePermissions, - Users.Default, - Users.Create, - Users.Update, - Users.Delete, - Users.ManagePermissions, - UserLookup.Default - }; + return ReflectionHelper.GetPublicConstantsRecursively(typeof(IdentityPermissions)); } } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantManagementPermissions.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantManagementPermissions.cs index 6bc90271bc..49afb47c25 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantManagementPermissions.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantManagementPermissions.cs @@ -1,4 +1,6 @@ -namespace Volo.Abp.TenantManagement +using Volo.Abp.Reflection; + +namespace Volo.Abp.TenantManagement { public static class TenantManagementPermissions { @@ -16,16 +18,7 @@ public static string[] GetAll() { - return new[] - { - GroupName, - Tenants.Default, - Tenants.Create, - Tenants.Update, - Tenants.Delete, - Tenants.ManageFeatures, - Tenants.ManageConnectionStrings - }; + return ReflectionHelper.GetPublicConstantsRecursively(typeof(TenantManagementPermissions)); } } } \ No newline at end of file diff --git a/samples/BookStore/src/Acme.BookStore.Application/Permissions/BookStorePermissions.cs b/samples/BookStore/src/Acme.BookStore.Application/Permissions/BookStorePermissions.cs index b1ec575904..ea8a26d6ef 100644 --- a/samples/BookStore/src/Acme.BookStore.Application/Permissions/BookStorePermissions.cs +++ b/samples/BookStore/src/Acme.BookStore.Application/Permissions/BookStorePermissions.cs @@ -1,4 +1,5 @@ using System; +using Volo.Abp.Reflection; namespace Acme.BookStore.Permissions { @@ -12,7 +13,7 @@ namespace Acme.BookStore.Permissions public static string[] GetAll() { //Return an array of all permissions - return Array.Empty(); + return ReflectionHelper.GetPublicConstantsRecursively(typeof(BookStorePermissions)); } } } \ No newline at end of file diff --git a/samples/MicroserviceDemo/modules/product/src/ProductManagement.Application.Contracts/ProductManagement/ProductManagementPermissions.cs b/samples/MicroserviceDemo/modules/product/src/ProductManagement.Application.Contracts/ProductManagement/ProductManagementPermissions.cs index b4dd949a73..eebc8cb29c 100644 --- a/samples/MicroserviceDemo/modules/product/src/ProductManagement.Application.Contracts/ProductManagement/ProductManagementPermissions.cs +++ b/samples/MicroserviceDemo/modules/product/src/ProductManagement.Application.Contracts/ProductManagement/ProductManagementPermissions.cs @@ -1,4 +1,6 @@ -namespace ProductManagement +using Volo.Abp.Reflection; + +namespace ProductManagement { public class ProductManagementPermissions { @@ -14,14 +16,7 @@ } public static string[] GetAll() { - return new[] - { - GroupName, - Products.Default, - Products.Delete, - Products.Update, - Products.Create - }; + return ReflectionHelper.GetPublicConstantsRecursively(typeof(ProductManagementPermissions)); } } } \ No newline at end of file diff --git a/templates/module/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName/MyProjectName/MyProjectNamePermissions.cs b/templates/module/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName/MyProjectName/MyProjectNamePermissions.cs index 88e7a3c05b..00d1124498 100644 --- a/templates/module/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName/MyProjectName/MyProjectNamePermissions.cs +++ b/templates/module/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName/MyProjectName/MyProjectNamePermissions.cs @@ -1,4 +1,6 @@ -namespace MyCompanyName.MyProjectName +using Volo.Abp.Reflection; + +namespace MyCompanyName.MyProjectName { public class MyProjectNamePermissions { @@ -6,10 +8,7 @@ public static string[] GetAll() { - return new[] - { - GroupName - }; + return ReflectionHelper.GetPublicConstantsRecursively(typeof(MyProjectNamePermissions)); } } } \ No newline at end of file diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Application/Permissions/MyProjectNamePermissions.cs b/templates/mvc/src/MyCompanyName.MyProjectName.Application/Permissions/MyProjectNamePermissions.cs index 4e499ae2ed..0646692500 100644 --- a/templates/mvc/src/MyCompanyName.MyProjectName.Application/Permissions/MyProjectNamePermissions.cs +++ b/templates/mvc/src/MyCompanyName.MyProjectName.Application/Permissions/MyProjectNamePermissions.cs @@ -1,4 +1,5 @@ using System; +using Volo.Abp.Reflection; namespace MyCompanyName.MyProjectName.Permissions { @@ -12,7 +13,7 @@ namespace MyCompanyName.MyProjectName.Permissions public static string[] GetAll() { //Return an array of all permissions - return Array.Empty(); + return ReflectionHelper.GetPublicConstantsRecursively(typeof(MyProjectNamePermissions)); } } } \ No newline at end of file diff --git a/templates/service/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName/MyProjectName/MyProjectNamePermissions.cs b/templates/service/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName/MyProjectName/MyProjectNamePermissions.cs index 88e7a3c05b..00d1124498 100644 --- a/templates/service/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName/MyProjectName/MyProjectNamePermissions.cs +++ b/templates/service/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName/MyProjectName/MyProjectNamePermissions.cs @@ -1,4 +1,6 @@ -namespace MyCompanyName.MyProjectName +using Volo.Abp.Reflection; + +namespace MyCompanyName.MyProjectName { public class MyProjectNamePermissions { @@ -6,10 +8,7 @@ public static string[] GetAll() { - return new[] - { - GroupName - }; + return ReflectionHelper.GetPublicConstantsRecursively(typeof(MyProjectNamePermissions)); } } } \ No newline at end of file From 4206528ff90dea98c80080523d65c7030c4394d4 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Fri, 26 Apr 2019 12:44:43 +0300 Subject: [PATCH 43/57] Update tr.json https://github.com/abpframework/abp/pull/1060 --- .../Localization/Resources/Blogging/Web/tr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/tr.json b/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/tr.json index bb8b23f9d2..7747638587 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/tr.json +++ b/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/tr.json @@ -39,7 +39,7 @@ "WhatIsNew": "Yeniler", "Name": "İsim", "ShortName": "Kısa isim", - "CreationTime": "Yaratma zamanı", + "CreationTime": "Oluşturulma zamanı", "Description": "Açıklama", "Blogs": "Bloglar", "Tags": "Etiketler" From 35fc002c0aaba9ece0b74838cf73e6f8a60e41cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B6=9B?= Date: Fri, 26 Apr 2019 18:05:57 +0800 Subject: [PATCH 44/57] Add branding provider and improve localization --- .../BloggingTestAppBrandingProvider.cs | 18 ++++++++++++++++++ .../Volo.Blogging.Web/Pages/Blog/Index.cshtml | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 modules/blogging/app/Volo.BloggingTestApp/Branding/BloggingTestAppBrandingProvider.cs diff --git a/modules/blogging/app/Volo.BloggingTestApp/Branding/BloggingTestAppBrandingProvider.cs b/modules/blogging/app/Volo.BloggingTestApp/Branding/BloggingTestAppBrandingProvider.cs new file mode 100644 index 0000000000..e5a8046ff7 --- /dev/null +++ b/modules/blogging/app/Volo.BloggingTestApp/Branding/BloggingTestAppBrandingProvider.cs @@ -0,0 +1,18 @@ +using Microsoft.AspNetCore.Mvc.Localization; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Components; +using Volo.Abp.DependencyInjection; +using Volo.Blogging.Localization; + +namespace Volo.BloggingTestApp.Branding +{ + [Dependency(ReplaceServices = true)] + public class BloggingTestAppBrandingProvider : DefaultBrandingProvider + { + public IHtmlLocalizer L { get; set; } + public BloggingTestAppBrandingProvider(IHtmlLocalizer localizer) + { + L = localizer; + } + public override string AppName => L["Blogs"].Value; + } +} diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Index.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Index.cshtml index fadaaab269..97f06b6dc0 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Index.cshtml +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Index.cshtml @@ -1,12 +1,12 @@ @page @using Volo.Blogging.Pages.Blog -@*inherits BloggingPage*@ +@inherits BloggingPage @model IndexModel @{ ViewBag.PageTitle = "Blog"; }

    - Blogs + @L["Blogs"]

      From e9be89d57c625faca5b4f0b986c2a143d67e3436 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 26 Apr 2019 20:42:46 +0800 Subject: [PATCH 45/57] fix #1058 Perform non-null validation on propertyName(context.Key.Name). --- ...AutoLocalizationMetadataDetailsProvider.cs | 5 ++++ .../Validation/ValidationTestController.cs | 25 ++++++++++++++++++- .../ValidationTestController_Tests.cs | 11 ++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpDataAnnotationAutoLocalizationMetadataDetailsProvider.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpDataAnnotationAutoLocalizationMetadataDetailsProvider.cs index 2274f0a9b6..d9de135e7f 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpDataAnnotationAutoLocalizationMetadataDetailsProvider.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpDataAnnotationAutoLocalizationMetadataDetailsProvider.cs @@ -39,6 +39,11 @@ namespace Volo.Abp.AspNetCore.Mvc return; } + if (context.Key.Name.IsNullOrWhiteSpace()) + { + return; + } + if (_localizationOptions.Value.Value.DataAnnotationLocalizerProvider == null) { return; diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController.cs index b9d01a86c4..6bb9a5ae94 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController.cs @@ -1,4 +1,5 @@ -using System.ComponentModel.DataAnnotations; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Shouldly; @@ -16,6 +17,14 @@ namespace Volo.Abp.AspNetCore.Mvc.Validation return Task.FromResult(model.Value1); } + [HttpGet] + [Route("object-result-action-with-custom_validate")] + public Task ObjectResultActionWithCustomValidate(CustomValidateModel model) + { + ModelState.IsValid.ShouldBeTrue(); //AbpValidationFilter throws exception otherwise + return Task.FromResult(model.Value1); + } + [HttpGet] [Route("action-result-action")] public IActionResult ActionResultAction(ValidationTest1Model model) @@ -29,5 +38,19 @@ namespace Volo.Abp.AspNetCore.Mvc.Validation [MinLength(2)] public string Value1 { get; set; } } + + public class CustomValidateModel : IValidatableObject + { + public string Value1 { get; set; } + + public IEnumerable Validate(ValidationContext validationContext) + { + if (Value1 != "hello") + { + yield return new ValidationResult("Value1 should be hello"); + } + } + } + } } \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs index 19a4bcd608..5177868843 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs @@ -47,5 +47,16 @@ namespace Volo.Abp.AspNetCore.Mvc.Validation var result = await GetResponseAsStringAsync("/api/validation-test/action-result-action"); //Missed the value1 result.ShouldBe("ModelState.IsValid: false"); } + + [Fact] + public async Task Should_Return_Custom_Validate_Errors() + { + var result = await GetResponseAsObjectAsync( + "/api/validation-test/object-result-action-with-custom_validate?value1=abc", HttpStatusCode.BadRequest); //value1 should be hello. + + result.Error.ValidationErrors.Length.ShouldBeGreaterThan(0); + result.Error.ValidationErrors.ShouldContain(x => x.Message == "Value1 should be hello"); + } + } } From fa32c1427b1ff0bfebcaf15f8d8737b560b41413 Mon Sep 17 00:00:00 2001 From: Aaron Chong Date: Sat, 27 Apr 2019 00:38:09 +0800 Subject: [PATCH 46/57] Fix spelling mistakes --- docs/en/Exception-Handling.md | 4 ++-- docs/en/Microservice-Architecture.md | 2 +- docs/en/Tutorials/AspNetCore-Mvc/Part-I.md | 4 ++-- docs/zh-Hans/Exception-Handling.md | 2 +- .../TagHelpers/Form/AbpInputTagHelperService.cs | 8 ++++---- .../TagHelpers/Form/AbpRadioInputTagHelperService.cs | 8 ++++---- .../TagHelpers/Form/AbpSelectTagHelperService.cs | 8 ++++---- .../ExceptionHandling/AbpExceptionHandlingMiddleware.cs | 2 +- .../DependencyInjection/AutofacServiceProviderFactory.cs | 2 +- .../DependencyInjection/ServiceCollectionExtensions.cs | 2 +- .../Volo/Abp/BackgroundJobs/BackgroundJobInfo.cs | 2 +- framework/src/Volo.Abp.Core/System/AbpStringExtensions.cs | 4 ++-- .../Entities/Events/Distributed/EntityToEtoMapper.cs | 2 +- .../Abp/Security/Encryption/StringEncryptionOptions.cs | 2 +- .../Volo/Abp/Uow/UnitOfWorkFailedEventArgs.cs | 2 +- .../Versioning/AbpAspNetCoreMvcVersioningTestModule.cs | 2 +- .../Volo/Abp/Auditing/AuditingInterceptor_Tests.cs | 2 +- .../AbpConventionalDependencyInjectionExtensions_Tests.cs | 6 +++--- .../Volo/Abp/BackgroundJobs/BackgroundJobRecord.cs | 2 +- 19 files changed, 33 insertions(+), 33 deletions(-) diff --git a/docs/en/Exception-Handling.md b/docs/en/Exception-Handling.md index 144c6016dd..93bad2b6ed 100644 --- a/docs/en/Exception-Handling.md +++ b/docs/en/Exception-Handling.md @@ -29,7 +29,7 @@ Error Message is an instance of the `RemoteServiceErrorResponse` class. The simp } ```` -There are **optional fields** those can be filled based upon the exception that has occured. +There are **optional fields** those can be filled based upon the exception that has occurred. ##### Error Code @@ -70,7 +70,7 @@ Error **details** in an optional field of the JSON error message. Thrown `Except "code": "App:010046", "message": "Your request is not valid, please correct and try again!", "validationErrors": [{ - "message": "Username should be minimum lenght of 3.", + "message": "Username should be minimum length of 3.", "members": ["userName"] }, { diff --git a/docs/en/Microservice-Architecture.md b/docs/en/Microservice-Architecture.md index e30c070a01..ff85873ee7 100644 --- a/docs/en/Microservice-Architecture.md +++ b/docs/en/Microservice-Architecture.md @@ -19,7 +19,7 @@ One of the major goals of the ABP framework is to provide a convenient infrastru ## Microservice for New Applications -One common advise to start a new solution is **always to start with a monolith**, keep it modular and split into microservices once the monolith becomes a problem. This makes your progress fast in the beginning especially if your team is small and you don't want to deal with challanges of the microservice architecture. +One common advise to start a new solution is **always to start with a monolith**, keep it modular and split into microservices once the monolith becomes a problem. This makes your progress fast in the beginning especially if your team is small and you don't want to deal with challenges of the microservice architecture. However, developing such a well-modular application can be a problem since it is **hard to keep modules isolated** from each other as you would do it for microservices (see [Stefan Tilkov's article](https://martinfowler.com/articles/dont-start-monolith.html) about that). Microservice architecture naturally forces you to develop well isolated services, but in a modular monolithic application it's easy to tight couple modules to each other and design **weak module boundaries** and API contracts. diff --git a/docs/en/Tutorials/AspNetCore-Mvc/Part-I.md b/docs/en/Tutorials/AspNetCore-Mvc/Part-I.md index a841b6ad65..ecc302c34d 100644 --- a/docs/en/Tutorials/AspNetCore-Mvc/Part-I.md +++ b/docs/en/Tutorials/AspNetCore-Mvc/Part-I.md @@ -151,7 +151,7 @@ namespace Acme.BookStore * **DTO** classes are used to **transfer data** between the *presentation layer* and the *application layer*. See the [Data Transfer Objects document](../../Data-Transfer-Objects.md) for more details. * `BookDto` is used to transfer book data to the presentation layer in order to show the book information on the UI. * `BookDto` is derived from the `AuditedEntityDto` which has audit properties just like the `Book` class defined above. -* `[AutoMapFrom(typeof(Book))]` is used to create AutoMapper mapping from the `Book` class to the `BookDto` class. In this way, you get automatic convertion of `Book` objects to `BookDto` objects (instead of manually copy all properties). +* `[AutoMapFrom(typeof(Book))]` is used to create AutoMapper mapping from the `Book` class to the `BookDto` class. In this way, you get automatic conversion of `Book` objects to `BookDto` objects (instead of manually copy all properties). #### CreateUpdateBookDto @@ -425,7 +425,7 @@ $(function () { ```` * `abp.libs.datatables.createAjax` is a helper function to adapt ABP's dynamic JavaScript API proxies to Datatable's format. -* `abp.libs.datatables.normalizeConfiguration` is another helper function. There's no requirment to use it, but it simplifies the datatables configuration by providing conventional values for missing options. +* `abp.libs.datatables.normalizeConfiguration` is another helper function. There's no requirement to use it, but it simplifies the datatables configuration by providing conventional values for missing options. * `acme.bookStore.book.getList` is the function to get list of books (you have seen it before). * See [Datatable's documentation](https://datatables.net/manual/) for more configuration options. diff --git a/docs/zh-Hans/Exception-Handling.md b/docs/zh-Hans/Exception-Handling.md index ecb4acf5e7..a251c50f61 100644 --- a/docs/zh-Hans/Exception-Handling.md +++ b/docs/zh-Hans/Exception-Handling.md @@ -70,7 +70,7 @@ ABP提供了用于处理Web应用程序异常的标准模型. "code": "App:010046", "message": "Your request is not valid, please correct and try again!", "validationErrors": [{ - "message": "Username should be minimum lenght of 3.", + "message": "Username should be minimum length of 3.", "members": ["userName"] }, { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs index cdf1f30788..dc2f04b623 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs @@ -35,10 +35,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form TagHelper.AspFor.Name, SurroundInnerHtmlAndGet(context, output, innerHtml, isCheckbox), order, - out var surpress + out var suppress ); - if (surpress) + if (suppress) { output.SuppressOutput(); } @@ -389,10 +389,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form return idAttr != null ? "for=\"" + idAttr.Value + "\"" : ""; } - protected virtual void AddGroupToFormGroupContents(TagHelperContext context, string propertyName, string html, int order, out bool surpress) + protected virtual void AddGroupToFormGroupContents(TagHelperContext context, string propertyName, string html, int order, out bool suppress) { var list = context.GetValue>(FormGroupContents) ?? new List(); - surpress = list == null; + suppress = list == null; if (list != null && !list.Any(igc => igc.HtmlContent.Contains("id=\"" + propertyName.Replace('.', '_') + "\""))) { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs index 6ec2911714..f89d3c1fee 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs @@ -29,9 +29,9 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form var html = GetHtml(context, output, selectItems); - AddGroupToFormGroupContents(context, TagHelper.AspFor.Name, html, order, out var surpress); + AddGroupToFormGroupContents(context, TagHelper.AspFor.Name, html, order, out var suppress); - if (surpress) + if (suppress) { output.SuppressOutput(); } @@ -157,10 +157,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form return TagHelper.AspFor.ModelExplorer.Model?.ToString(); } - protected virtual void AddGroupToFormGroupContents(TagHelperContext context, string propertyName, string html, int order, out bool surpress) + protected virtual void AddGroupToFormGroupContents(TagHelperContext context, string propertyName, string html, int order, out bool suppress) { var list = context.GetValue>(FormGroupContents) ?? new List(); - surpress = list == null; + suppress = list == null; if (list != null && !list.Any(igc => igc.HtmlContent.Contains("id=\"" + propertyName.Replace('.', '_') + "\""))) { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs index cd3294d66f..2c7e6ad1cf 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs @@ -33,9 +33,9 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form var order = TagHelper.AspFor.ModelExplorer.GetDisplayOrder(); - AddGroupToFormGroupContents(context, TagHelper.AspFor.Name, SurroundInnerHtmlAndGet(context, output, innerHtml), order, out var surpress); + AddGroupToFormGroupContents(context, TagHelper.AspFor.Name, SurroundInnerHtmlAndGet(context, output, innerHtml), order, out var suppress); - if (surpress) + if (suppress) { output.SuppressOutput(); } @@ -304,10 +304,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form return idAttr != null ? "for=\"" + idAttr.Value + "\"" : ""; } - protected virtual void AddGroupToFormGroupContents(TagHelperContext context, string propertyName, string html, int order, out bool surpress) + protected virtual void AddGroupToFormGroupContents(TagHelperContext context, string propertyName, string html, int order, out bool suppress) { var list = context.GetValue>(FormGroupContents) ?? new List(); - surpress = list == null; + suppress = list == null; if (list != null && !list.Any(igc => igc.HtmlContent.Contains("id=\"" + propertyName.Replace('.', '_') + "\""))) { diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/AbpExceptionHandlingMiddleware.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/AbpExceptionHandlingMiddleware.cs index 502fbda5bb..f36a7f4860 100644 --- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/AbpExceptionHandlingMiddleware.cs +++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/AbpExceptionHandlingMiddleware.cs @@ -36,7 +36,7 @@ namespace Volo.Abp.AspNetCore.Mvc.ExceptionHandling // We can't do anything if the response has already started, just abort. if (httpContext.Response.HasStarted) { - _logger.LogWarning("An exception occured, but response has already started!"); + _logger.LogWarning("An exception occurred, but response has already started!"); throw; } diff --git a/framework/src/Volo.Abp.Autofac/Autofac/Extensions/DependencyInjection/AutofacServiceProviderFactory.cs b/framework/src/Volo.Abp.Autofac/Autofac/Extensions/DependencyInjection/AutofacServiceProviderFactory.cs index 8e0d4f574d..21a7ca331d 100644 --- a/framework/src/Volo.Abp.Autofac/Autofac/Extensions/DependencyInjection/AutofacServiceProviderFactory.cs +++ b/framework/src/Volo.Abp.Autofac/Autofac/Extensions/DependencyInjection/AutofacServiceProviderFactory.cs @@ -38,7 +38,7 @@ namespace Autofac.Extensions.DependencyInjection /// /// Initializes a new instance of the class. /// - /// Action on a that adds component registrations to the conatiner. + /// Action on a that adds component registrations to the container. public AutofacServiceProviderFactory(Action configurationAction = null) { _configurationAction = configurationAction ?? (builder => { }); diff --git a/framework/src/Volo.Abp.Autofac/Autofac/Extensions/DependencyInjection/ServiceCollectionExtensions.cs b/framework/src/Volo.Abp.Autofac/Autofac/Extensions/DependencyInjection/ServiceCollectionExtensions.cs index 5552cda7b2..1195cb9fb1 100644 --- a/framework/src/Volo.Abp.Autofac/Autofac/Extensions/DependencyInjection/ServiceCollectionExtensions.cs +++ b/framework/src/Volo.Abp.Autofac/Autofac/Extensions/DependencyInjection/ServiceCollectionExtensions.cs @@ -37,7 +37,7 @@ namespace Autofac.Extensions.DependencyInjection /// Adds the to the service collection. /// /// The service collection to add the factory to. - /// Action on a that adds component registrations to the conatiner. + /// Action on a that adds component registrations to the container. /// The service collection. public static IServiceCollection AddAutofac(this IServiceCollection services, Action configurationAction = null) { diff --git a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobInfo.cs b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobInfo.cs index 7e1154ec7e..6241bc81f9 100644 --- a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobInfo.cs +++ b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobInfo.cs @@ -42,7 +42,7 @@ namespace Volo.Abp.BackgroundJobs public virtual DateTime? LastTryTime { get; set; } /// - /// This is true if this job is continously failed and will not be executed again. + /// This is true if this job is continuously failed and will not be executed again. /// public virtual bool IsAbandoned { get; set; } diff --git a/framework/src/Volo.Abp.Core/System/AbpStringExtensions.cs b/framework/src/Volo.Abp.Core/System/AbpStringExtensions.cs index a7cf7c763e..31e7f257d4 100644 --- a/framework/src/Volo.Abp.Core/System/AbpStringExtensions.cs +++ b/framework/src/Volo.Abp.Core/System/AbpStringExtensions.cs @@ -84,11 +84,11 @@ namespace System } /// - /// Gets index of nth occurence of a char in a string. + /// Gets index of nth occurrence of a char in a string. /// /// source string to be searched /// Char to search in - /// Count of the occurence + /// Count of the occurrence public static int NthIndexOf(this string str, char c, int n) { Check.NotNull(str, nameof(str)); diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityToEtoMapper.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityToEtoMapper.cs index 354f72dddc..fd7cab1f4f 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityToEtoMapper.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityToEtoMapper.cs @@ -39,7 +39,7 @@ namespace Volo.Abp.Domain.Entities.Events.Distributed return new EntityEto(keys); } - //TODO: Also add KeysAsString property to resulting json for compability with the EntityEto! + //TODO: Also add KeysAsString property to resulting json for compatibility with the EntityEto! return ObjectMapper.Map(entityType, etoType, entityObj); } } diff --git a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Encryption/StringEncryptionOptions.cs b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Encryption/StringEncryptionOptions.cs index 91768d37e8..67eae167c3 100644 --- a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Encryption/StringEncryptionOptions.cs +++ b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Encryption/StringEncryptionOptions.cs @@ -15,7 +15,7 @@ namespace Volo.Abp.Security.Encryption /// /// Default password to encrypt/decrypt texts. - /// It's recommented to set to another value for security. + /// It's recommended to set to another value for security. /// Default value: "gsKnGZ041HLL4IM8" /// public string DefaultPassPhrase { get; set; } diff --git a/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkFailedEventArgs.cs b/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkFailedEventArgs.cs index 4218a9693f..df867c2320 100644 --- a/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkFailedEventArgs.cs +++ b/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkFailedEventArgs.cs @@ -9,7 +9,7 @@ namespace Volo.Abp.Uow public class UnitOfWorkFailedEventArgs : UnitOfWorkEventArgs { /// - /// Exception that caused failure. This is set only if an error occured during . + /// Exception that caused failure. This is set only if an error occurred during . /// Can be null if there is no exception, but is not called. /// Can be null if another exception occurred during the UOW. /// diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Versioning.Tests/Volo/Abp/AspNetCore/Mvc/Versioning/AbpAspNetCoreMvcVersioningTestModule.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Versioning.Tests/Volo/Abp/AspNetCore/Mvc/Versioning/AbpAspNetCoreMvcVersioningTestModule.cs index 728b119a19..24a76e3766 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Versioning.Tests/Volo/Abp/AspNetCore/Mvc/Versioning/AbpAspNetCoreMvcVersioningTestModule.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Versioning.Tests/Volo/Abp/AspNetCore/Mvc/Versioning/AbpAspNetCoreMvcVersioningTestModule.cs @@ -27,7 +27,7 @@ namespace Volo.Abp.AspNetCore.Mvc.Versioning opts.ApiVersions.Add(new ApiVersion(2, 0)); }); - //1.0 Compatability version + //1.0 Compatibility version options.ConventionalControllers.Create(typeof(AbpAspNetCoreMvcVersioningTestModule).Assembly, opts => { opts.TypePredicate = t => t.Namespace == typeof(Volo.Abp.AspNetCore.Mvc.Versioning.App.Compat.TodoAppService).Namespace; diff --git a/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/AuditingInterceptor_Tests.cs b/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/AuditingInterceptor_Tests.cs index 141bf01688..23eba6c53b 100644 --- a/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/AuditingInterceptor_Tests.cs +++ b/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/AuditingInterceptor_Tests.cs @@ -37,7 +37,7 @@ namespace Volo.Abp.Auditing using (var scope = _auditingManager.BeginScope()) { - await myAuditedObject1.DoItAsync(new InputObject { Value1 = "fourty-two", Value2 = 42 }); + await myAuditedObject1.DoItAsync(new InputObject { Value1 = "forty-two", Value2 = 42 }); await scope.SaveAsync(); } diff --git a/framework/test/Volo.Abp.Core.Tests/Microsoft/Extensions/DependencyInjection/AbpConventionalDependencyInjectionExtensions_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Microsoft/Extensions/DependencyInjection/AbpConventionalDependencyInjectionExtensions_Tests.cs index 369ee98cb9..dc02cf4e2d 100644 --- a/framework/test/Volo.Abp.Core.Tests/Microsoft/Extensions/DependencyInjection/AbpConventionalDependencyInjectionExtensions_Tests.cs +++ b/framework/test/Volo.Abp.Core.Tests/Microsoft/Extensions/DependencyInjection/AbpConventionalDependencyInjectionExtensions_Tests.cs @@ -85,7 +85,7 @@ namespace Microsoft.Extensions.DependencyInjection //Assert - //Check descriptons in service collection + //Check descriptions in service collection var descriptions = _services.Where(s => s.ServiceType == typeof(IMyService)).ToList(); descriptions.Count.ShouldBe(2); descriptions[0].ImplementationType.ShouldBe(typeof(FirstImplOfMyService)); @@ -113,7 +113,7 @@ namespace Microsoft.Extensions.DependencyInjection //Assert - //Check descriptons in service collection + //Check descriptions in service collection var descriptions = _services.Where(s => s.ServiceType == typeof(IMyService)).ToList(); descriptions.Count.ShouldBe(1); descriptions[0].ImplementationType.ShouldBe(typeof(FirstImplOfMyService)); @@ -139,7 +139,7 @@ namespace Microsoft.Extensions.DependencyInjection //Assert - //Check descriptons in service collection + //Check descriptions in service collection var descriptions = _services.Where(s => s.ServiceType == typeof(IMyService)).ToList(); descriptions.Count.ShouldBe(1); descriptions[0].ImplementationType.ShouldBe(typeof(MyServiceReplacesIMyService)); diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain/Volo/Abp/BackgroundJobs/BackgroundJobRecord.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain/Volo/Abp/BackgroundJobs/BackgroundJobRecord.cs index 0c18e9f877..c3684d9cfe 100644 --- a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain/Volo/Abp/BackgroundJobs/BackgroundJobRecord.cs +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain/Volo/Abp/BackgroundJobs/BackgroundJobRecord.cs @@ -39,7 +39,7 @@ namespace Volo.Abp.BackgroundJobs public virtual DateTime? LastTryTime { get; set; } /// - /// This is true if this job is continously failed and will not be executed again. + /// This is true if this job is continuously failed and will not be executed again. /// public virtual bool IsAbandoned { get; set; } From f655540555712410cccf722f4bda46f465a11e3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20=C3=87AGDA=C5=9E?= Date: Fri, 26 Apr 2019 22:38:48 +0300 Subject: [PATCH 47/57] updated all nuget packages --- .../Volo.AbpWebSite.Domain/Volo.AbpWebSite.Domain.csproj | 2 +- .../Volo.Utils.SolutionTemplating.csproj | 2 +- .../Volo.Abp.AspNetCore.Mvc.csproj | 2 +- .../src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj | 2 +- .../src/Volo.Abp.AutoMapper/Volo.Abp.AutoMapper.csproj | 2 +- framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj | 2 +- framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj | 6 +++--- .../Volo.Abp.EntityFrameworkCore.SqlServer.csproj | 2 +- .../Volo.Abp.EntityFrameworkCore.csproj | 4 ++-- .../Volo.Abp.FluentValidation.csproj | 2 +- framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj | 2 +- .../Volo.Abp.IdentityModel/Volo.Abp.IdentityModel.csproj | 2 +- framework/src/Volo.Abp.Json/Volo.Abp.Json.csproj | 2 +- .../Volo.Abp.Localization/Volo.Abp.Localization.csproj | 2 +- framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj | 2 +- framework/test/AbpTestBase/AbpTestBase.csproj | 4 ++-- .../Volo.Abp.AspNetCore.Authentication.OAuth.Tests.csproj | 2 +- .../Volo.Abp.AspNetCore.MultiTenancy.Tests.csproj | 2 +- .../Volo.Abp.AspNetCore.Mvc.Tests.csproj | 2 +- ...Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj | 2 +- .../Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj | 6 +++--- .../Volo.Abp.AspNetCore.Mvc.UI.Tests.csproj | 2 +- .../Volo.Abp.AspNetCore.Mvc.Versioning.Tests.csproj | 2 +- .../Volo.Abp.AspNetCore.Tests.csproj | 2 +- .../Volo.Abp.Auditing.Tests.csproj | 2 +- .../Volo.Abp.Authorization.Tests.csproj | 2 +- .../Volo.Abp.AutoMapper.Tests.csproj | 2 +- .../Volo.Abp.Autofac.Tests/Volo.Abp.Autofac.Tests.csproj | 2 +- .../Volo.Abp.BackgroundJobs.Tests.csproj | 2 +- .../Volo.Abp.Caching.Tests/Volo.Abp.Caching.Tests.csproj | 2 +- .../Volo.Abp.Castle.Core.Tests.csproj | 2 +- .../test/Volo.Abp.Core.Tests/Volo.Abp.Core.Tests.csproj | 2 +- .../test/Volo.Abp.Data.Tests/Volo.Abp.Data.Tests.csproj | 2 +- .../test/Volo.Abp.Ddd.Tests/Volo.Abp.Ddd.Tests.csproj | 2 +- .../Volo.Abp.Emailing.Tests.csproj | 2 +- .../Volo.Abp.EntityFrameworkCore.Tests.csproj | 4 ++-- .../Volo.Abp.EventBus.Tests.csproj | 2 +- .../Volo.Abp.Features.Tests.csproj | 2 +- .../Volo.Abp.FluentValidation.Tests.csproj | 2 +- .../Volo.Abp.Http.Client.Tests.csproj | 2 +- .../Volo.Abp.Localization.Tests.csproj | 2 +- .../Volo.Abp.MemoryDb.Tests.csproj | 2 +- .../Volo.Abp.MongoDB.Tests/Volo.Abp.MongoDB.Tests.csproj | 4 ++-- .../Volo.Abp.MultiTenancy.Tests.csproj | 2 +- .../Volo.Abp.Security.Tests.csproj | 2 +- .../Volo.Abp.Serialization.Tests.csproj | 2 +- .../Volo.Abp.Settings.Tests.csproj | 2 +- .../Volo.Abp.TestApp.Tests/Volo.Abp.TestApp.Tests.csproj | 2 +- framework/test/Volo.Abp.TestApp/Volo.Abp.TestApp.csproj | 2 +- .../Volo.Abp.UI.Navigation.Tests.csproj | 2 +- .../test/Volo.Abp.Uow.Tests/Volo.Abp.Uow.Tests.csproj | 2 +- .../Volo.Abp.Validation.Tests.csproj | 2 +- .../Volo.Abp.VirtualFileSystem.Tests.csproj | 2 +- ...Volo.Abp.AuditLogging.EntityFrameworkCore.Tests.csproj | 2 +- .../Volo.Abp.BackgroundJobs.DemoApp.HangFire.csproj | 2 +- .../Volo.Abp.BackgroundJobs.DemoApp.csproj | 5 ++++- .../Volo.Abp.BackgroundJobs.Domain.Tests.csproj | 2 +- ...lo.Abp.BackgroundJobs.EntityFrameworkCore.Tests.csproj | 8 ++++---- .../Volo.Abp.BackgroundJobs.MongoDB.Tests.csproj | 4 ++-- .../Volo.Abp.BackgroundJobs.TestBase.csproj | 4 ++-- .../Volo.Blogging.EntityFrameworkCore.Tests.csproj | 2 +- .../Volo.Docs.EntityFrameworkCore.Tests.csproj | 4 ++-- ...Abp.FeatureManagement.EntityFrameworkCore.Tests.csproj | 4 ++-- .../Volo.Abp.Identity.EntityFrameworkCore.Tests.csproj | 4 ++-- ...lo.Abp.IdentityServer.EntityFrameworkCore.Tests.csproj | 2 +- ....PermissionManagement.EntityFrameworkCore.Tests.csproj | 2 +- .../Volo.Abp.PermissionManagement.Tests.csproj | 2 +- ...Abp.SettingManagement.EntityFrameworkCore.Tests.csproj | 2 +- ....Abp.TenantManagement.EntityFrameworkCore.Tests.csproj | 4 ++-- .../Volo.Abp.Users.EntityFrameworkCore.Tests.csproj | 2 +- .../Acme.BookStore.Application.Tests.csproj | 2 +- .../ProductManagement.EntityFrameworkCore.Tests.csproj | 4 ++-- ...anyName.MyProjectName.EntityFrameworkCore.Tests.csproj | 4 ++-- .../MyCompanyName.MyProjectName.Application.Tests.csproj | 2 +- ...anyName.MyProjectName.EntityFrameworkCore.Tests.csproj | 4 ++-- 75 files changed, 98 insertions(+), 95 deletions(-) diff --git a/abp_io/src/Volo.AbpWebSite.Domain/Volo.AbpWebSite.Domain.csproj b/abp_io/src/Volo.AbpWebSite.Domain/Volo.AbpWebSite.Domain.csproj index b0c9926b35..78d1a7ac96 100644 --- a/abp_io/src/Volo.AbpWebSite.Domain/Volo.AbpWebSite.Domain.csproj +++ b/abp_io/src/Volo.AbpWebSite.Domain/Volo.AbpWebSite.Domain.csproj @@ -12,7 +12,7 @@ - + diff --git a/abp_io/src/Volo.Utils.SolutionTemplating/Volo.Utils.SolutionTemplating.csproj b/abp_io/src/Volo.Utils.SolutionTemplating/Volo.Utils.SolutionTemplating.csproj index 254d8b65c5..10004ae55e 100644 --- a/abp_io/src/Volo.Utils.SolutionTemplating/Volo.Utils.SolutionTemplating.csproj +++ b/abp_io/src/Volo.Utils.SolutionTemplating/Volo.Utils.SolutionTemplating.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo.Abp.AspNetCore.Mvc.csproj b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo.Abp.AspNetCore.Mvc.csproj index e99572852e..4ee308e591 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo.Abp.AspNetCore.Mvc.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo.Abp.AspNetCore.Mvc.csproj @@ -23,7 +23,7 @@ - + diff --git a/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj b/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj index 37c728f175..fb85cbb3ec 100644 --- a/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj +++ b/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj @@ -29,7 +29,7 @@ - + diff --git a/framework/src/Volo.Abp.AutoMapper/Volo.Abp.AutoMapper.csproj b/framework/src/Volo.Abp.AutoMapper/Volo.Abp.AutoMapper.csproj index ae384414a3..029669c348 100644 --- a/framework/src/Volo.Abp.AutoMapper/Volo.Abp.AutoMapper.csproj +++ b/framework/src/Volo.Abp.AutoMapper/Volo.Abp.AutoMapper.csproj @@ -18,7 +18,7 @@ - + \ No newline at end of file diff --git a/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj b/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj index c8737bbfeb..3e68488105 100644 --- a/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj +++ b/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj b/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj index 71d48038e2..e5355a19c1 100644 --- a/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj +++ b/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj @@ -14,16 +14,16 @@ - + - + - + diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo.Abp.EntityFrameworkCore.SqlServer.csproj b/framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo.Abp.EntityFrameworkCore.SqlServer.csproj index 5b33186509..2f5cdfb4fb 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo.Abp.EntityFrameworkCore.SqlServer.csproj +++ b/framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo.Abp.EntityFrameworkCore.SqlServer.csproj @@ -18,7 +18,7 @@ - + diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj b/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj index 65dda178a5..bfbf0cdf49 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj @@ -19,8 +19,8 @@ - - + + diff --git a/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj b/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj index 12084177a9..fe8a6a4192 100644 --- a/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj +++ b/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj @@ -14,7 +14,7 @@ - + diff --git a/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj b/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj index e418ca03e5..e4b9db1c7b 100644 --- a/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj +++ b/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj @@ -14,7 +14,7 @@ - + diff --git a/framework/src/Volo.Abp.IdentityModel/Volo.Abp.IdentityModel.csproj b/framework/src/Volo.Abp.IdentityModel/Volo.Abp.IdentityModel.csproj index d16fac5ba0..fcfff3fcb5 100644 --- a/framework/src/Volo.Abp.IdentityModel/Volo.Abp.IdentityModel.csproj +++ b/framework/src/Volo.Abp.IdentityModel/Volo.Abp.IdentityModel.csproj @@ -14,7 +14,7 @@ - + diff --git a/framework/src/Volo.Abp.Json/Volo.Abp.Json.csproj b/framework/src/Volo.Abp.Json/Volo.Abp.Json.csproj index 39b92cc428..8964f2f4fe 100644 --- a/framework/src/Volo.Abp.Json/Volo.Abp.Json.csproj +++ b/framework/src/Volo.Abp.Json/Volo.Abp.Json.csproj @@ -14,7 +14,7 @@ - + diff --git a/framework/src/Volo.Abp.Localization/Volo.Abp.Localization.csproj b/framework/src/Volo.Abp.Localization/Volo.Abp.Localization.csproj index b429defa2d..65ceed101e 100644 --- a/framework/src/Volo.Abp.Localization/Volo.Abp.Localization.csproj +++ b/framework/src/Volo.Abp.Localization/Volo.Abp.Localization.csproj @@ -18,7 +18,7 @@ - + diff --git a/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj b/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj index f2f59a9a64..9492e6fbf3 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj +++ b/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj @@ -14,7 +14,7 @@ - + diff --git a/framework/test/AbpTestBase/AbpTestBase.csproj b/framework/test/AbpTestBase/AbpTestBase.csproj index 5e9761d304..4a25e99676 100644 --- a/framework/test/AbpTestBase/AbpTestBase.csproj +++ b/framework/test/AbpTestBase/AbpTestBase.csproj @@ -15,8 +15,8 @@ - - + + diff --git a/framework/test/Volo.Abp.AspNetCore.Authentication.OAuth.Tests/Volo.Abp.AspNetCore.Authentication.OAuth.Tests.csproj b/framework/test/Volo.Abp.AspNetCore.Authentication.OAuth.Tests/Volo.Abp.AspNetCore.Authentication.OAuth.Tests.csproj index 1ca29422b9..806e426f82 100644 --- a/framework/test/Volo.Abp.AspNetCore.Authentication.OAuth.Tests/Volo.Abp.AspNetCore.Authentication.OAuth.Tests.csproj +++ b/framework/test/Volo.Abp.AspNetCore.Authentication.OAuth.Tests/Volo.Abp.AspNetCore.Authentication.OAuth.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo.Abp.AspNetCore.MultiTenancy.Tests.csproj b/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo.Abp.AspNetCore.MultiTenancy.Tests.csproj index b7ba4ddd36..b0d3baaad9 100644 --- a/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo.Abp.AspNetCore.MultiTenancy.Tests.csproj +++ b/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo.Abp.AspNetCore.MultiTenancy.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj index 551dfd9f2a..bd0a8c1ca0 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj @@ -21,7 +21,7 @@ - + diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj index 9d5b607bfd..a25b7d7d8f 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj @@ -20,7 +20,7 @@ - + diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj index 3b6d429dd0..dd5e36ed14 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj @@ -17,9 +17,9 @@ - - - + + + diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests/Volo.Abp.AspNetCore.Mvc.UI.Tests.csproj b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests/Volo.Abp.AspNetCore.Mvc.UI.Tests.csproj index 7ee7949c19..74c0285f34 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests/Volo.Abp.AspNetCore.Mvc.UI.Tests.csproj +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests/Volo.Abp.AspNetCore.Mvc.UI.Tests.csproj @@ -17,7 +17,7 @@ - + diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Versioning.Tests/Volo.Abp.AspNetCore.Mvc.Versioning.Tests.csproj b/framework/test/Volo.Abp.AspNetCore.Mvc.Versioning.Tests/Volo.Abp.AspNetCore.Mvc.Versioning.Tests.csproj index 7ffebd4224..d32284ed87 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Versioning.Tests/Volo.Abp.AspNetCore.Mvc.Versioning.Tests.csproj +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Versioning.Tests/Volo.Abp.AspNetCore.Mvc.Versioning.Tests.csproj @@ -17,7 +17,7 @@ - + diff --git a/framework/test/Volo.Abp.AspNetCore.Tests/Volo.Abp.AspNetCore.Tests.csproj b/framework/test/Volo.Abp.AspNetCore.Tests/Volo.Abp.AspNetCore.Tests.csproj index 7ade7ea81b..9c7544a2f6 100644 --- a/framework/test/Volo.Abp.AspNetCore.Tests/Volo.Abp.AspNetCore.Tests.csproj +++ b/framework/test/Volo.Abp.AspNetCore.Tests/Volo.Abp.AspNetCore.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/framework/test/Volo.Abp.Auditing.Tests/Volo.Abp.Auditing.Tests.csproj b/framework/test/Volo.Abp.Auditing.Tests/Volo.Abp.Auditing.Tests.csproj index 35b66f5bfe..cb099c5168 100644 --- a/framework/test/Volo.Abp.Auditing.Tests/Volo.Abp.Auditing.Tests.csproj +++ b/framework/test/Volo.Abp.Auditing.Tests/Volo.Abp.Auditing.Tests.csproj @@ -16,7 +16,7 @@ - + diff --git a/framework/test/Volo.Abp.Authorization.Tests/Volo.Abp.Authorization.Tests.csproj b/framework/test/Volo.Abp.Authorization.Tests/Volo.Abp.Authorization.Tests.csproj index 160262de19..88925bb67d 100644 --- a/framework/test/Volo.Abp.Authorization.Tests/Volo.Abp.Authorization.Tests.csproj +++ b/framework/test/Volo.Abp.Authorization.Tests/Volo.Abp.Authorization.Tests.csproj @@ -16,7 +16,7 @@ - + diff --git a/framework/test/Volo.Abp.AutoMapper.Tests/Volo.Abp.AutoMapper.Tests.csproj b/framework/test/Volo.Abp.AutoMapper.Tests/Volo.Abp.AutoMapper.Tests.csproj index 1f2757b34e..9eb89d4af9 100644 --- a/framework/test/Volo.Abp.AutoMapper.Tests/Volo.Abp.AutoMapper.Tests.csproj +++ b/framework/test/Volo.Abp.AutoMapper.Tests/Volo.Abp.AutoMapper.Tests.csproj @@ -14,7 +14,7 @@ - + \ No newline at end of file diff --git a/framework/test/Volo.Abp.Autofac.Tests/Volo.Abp.Autofac.Tests.csproj b/framework/test/Volo.Abp.Autofac.Tests/Volo.Abp.Autofac.Tests.csproj index 26a16f83cc..c92d40f8be 100644 --- a/framework/test/Volo.Abp.Autofac.Tests/Volo.Abp.Autofac.Tests.csproj +++ b/framework/test/Volo.Abp.Autofac.Tests/Volo.Abp.Autofac.Tests.csproj @@ -15,7 +15,7 @@ - + \ No newline at end of file diff --git a/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo.Abp.BackgroundJobs.Tests.csproj b/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo.Abp.BackgroundJobs.Tests.csproj index 8c6a8170b8..7fa0474264 100644 --- a/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo.Abp.BackgroundJobs.Tests.csproj +++ b/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo.Abp.BackgroundJobs.Tests.csproj @@ -16,7 +16,7 @@ - + \ No newline at end of file diff --git a/framework/test/Volo.Abp.Caching.Tests/Volo.Abp.Caching.Tests.csproj b/framework/test/Volo.Abp.Caching.Tests/Volo.Abp.Caching.Tests.csproj index 49f5d2454a..2b4696092c 100644 --- a/framework/test/Volo.Abp.Caching.Tests/Volo.Abp.Caching.Tests.csproj +++ b/framework/test/Volo.Abp.Caching.Tests/Volo.Abp.Caching.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/test/Volo.Abp.Castle.Core.Tests/Volo.Abp.Castle.Core.Tests.csproj b/framework/test/Volo.Abp.Castle.Core.Tests/Volo.Abp.Castle.Core.Tests.csproj index c96b26d272..c5a45236c2 100644 --- a/framework/test/Volo.Abp.Castle.Core.Tests/Volo.Abp.Castle.Core.Tests.csproj +++ b/framework/test/Volo.Abp.Castle.Core.Tests/Volo.Abp.Castle.Core.Tests.csproj @@ -14,7 +14,7 @@ - + \ No newline at end of file diff --git a/framework/test/Volo.Abp.Core.Tests/Volo.Abp.Core.Tests.csproj b/framework/test/Volo.Abp.Core.Tests/Volo.Abp.Core.Tests.csproj index f043c10c13..bd58cb0d71 100644 --- a/framework/test/Volo.Abp.Core.Tests/Volo.Abp.Core.Tests.csproj +++ b/framework/test/Volo.Abp.Core.Tests/Volo.Abp.Core.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/framework/test/Volo.Abp.Data.Tests/Volo.Abp.Data.Tests.csproj b/framework/test/Volo.Abp.Data.Tests/Volo.Abp.Data.Tests.csproj index 1cef1431c2..13c9cb2ef3 100644 --- a/framework/test/Volo.Abp.Data.Tests/Volo.Abp.Data.Tests.csproj +++ b/framework/test/Volo.Abp.Data.Tests/Volo.Abp.Data.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/framework/test/Volo.Abp.Ddd.Tests/Volo.Abp.Ddd.Tests.csproj b/framework/test/Volo.Abp.Ddd.Tests/Volo.Abp.Ddd.Tests.csproj index ae203870fe..ad4141f96f 100644 --- a/framework/test/Volo.Abp.Ddd.Tests/Volo.Abp.Ddd.Tests.csproj +++ b/framework/test/Volo.Abp.Ddd.Tests/Volo.Abp.Ddd.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/test/Volo.Abp.Emailing.Tests/Volo.Abp.Emailing.Tests.csproj b/framework/test/Volo.Abp.Emailing.Tests/Volo.Abp.Emailing.Tests.csproj index 5083782360..32b4f25816 100644 --- a/framework/test/Volo.Abp.Emailing.Tests/Volo.Abp.Emailing.Tests.csproj +++ b/framework/test/Volo.Abp.Emailing.Tests/Volo.Abp.Emailing.Tests.csproj @@ -18,7 +18,7 @@ - + diff --git a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo.Abp.EntityFrameworkCore.Tests.csproj b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo.Abp.EntityFrameworkCore.Tests.csproj index 4162f8319b..3f32baa6aa 100644 --- a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo.Abp.EntityFrameworkCore.Tests.csproj +++ b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo.Abp.EntityFrameworkCore.Tests.csproj @@ -20,8 +20,8 @@ - - + + \ No newline at end of file diff --git a/framework/test/Volo.Abp.EventBus.Tests/Volo.Abp.EventBus.Tests.csproj b/framework/test/Volo.Abp.EventBus.Tests/Volo.Abp.EventBus.Tests.csproj index dc8ab54f51..e810d5ef76 100644 --- a/framework/test/Volo.Abp.EventBus.Tests/Volo.Abp.EventBus.Tests.csproj +++ b/framework/test/Volo.Abp.EventBus.Tests/Volo.Abp.EventBus.Tests.csproj @@ -17,7 +17,7 @@ - + diff --git a/framework/test/Volo.Abp.Features.Tests/Volo.Abp.Features.Tests.csproj b/framework/test/Volo.Abp.Features.Tests/Volo.Abp.Features.Tests.csproj index 3632aa2bf3..ece1f124d5 100644 --- a/framework/test/Volo.Abp.Features.Tests/Volo.Abp.Features.Tests.csproj +++ b/framework/test/Volo.Abp.Features.Tests/Volo.Abp.Features.Tests.csproj @@ -16,7 +16,7 @@ - + diff --git a/framework/test/Volo.Abp.FluentValidation.Tests/Volo.Abp.FluentValidation.Tests.csproj b/framework/test/Volo.Abp.FluentValidation.Tests/Volo.Abp.FluentValidation.Tests.csproj index ab2f82eefa..b0bc864896 100644 --- a/framework/test/Volo.Abp.FluentValidation.Tests/Volo.Abp.FluentValidation.Tests.csproj +++ b/framework/test/Volo.Abp.FluentValidation.Tests/Volo.Abp.FluentValidation.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo.Abp.Http.Client.Tests.csproj b/framework/test/Volo.Abp.Http.Client.Tests/Volo.Abp.Http.Client.Tests.csproj index e0a8ea60de..4997863830 100644 --- a/framework/test/Volo.Abp.Http.Client.Tests/Volo.Abp.Http.Client.Tests.csproj +++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo.Abp.Http.Client.Tests.csproj @@ -15,7 +15,7 @@ - + \ No newline at end of file diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo.Abp.Localization.Tests.csproj b/framework/test/Volo.Abp.Localization.Tests/Volo.Abp.Localization.Tests.csproj index f5b87ab423..98a01e2fc7 100644 --- a/framework/test/Volo.Abp.Localization.Tests/Volo.Abp.Localization.Tests.csproj +++ b/framework/test/Volo.Abp.Localization.Tests/Volo.Abp.Localization.Tests.csproj @@ -18,7 +18,7 @@ - + diff --git a/framework/test/Volo.Abp.MemoryDb.Tests/Volo.Abp.MemoryDb.Tests.csproj b/framework/test/Volo.Abp.MemoryDb.Tests/Volo.Abp.MemoryDb.Tests.csproj index 0a61a38420..062cfaf730 100644 --- a/framework/test/Volo.Abp.MemoryDb.Tests/Volo.Abp.MemoryDb.Tests.csproj +++ b/framework/test/Volo.Abp.MemoryDb.Tests/Volo.Abp.MemoryDb.Tests.csproj @@ -16,7 +16,7 @@ - + \ No newline at end of file diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo.Abp.MongoDB.Tests.csproj b/framework/test/Volo.Abp.MongoDB.Tests/Volo.Abp.MongoDB.Tests.csproj index f2508f81ca..5ca5401bac 100644 --- a/framework/test/Volo.Abp.MongoDB.Tests/Volo.Abp.MongoDB.Tests.csproj +++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo.Abp.MongoDB.Tests.csproj @@ -19,8 +19,8 @@ - - + + \ No newline at end of file diff --git a/framework/test/Volo.Abp.MultiTenancy.Tests/Volo.Abp.MultiTenancy.Tests.csproj b/framework/test/Volo.Abp.MultiTenancy.Tests/Volo.Abp.MultiTenancy.Tests.csproj index 6b18627f7e..631ad1ed81 100644 --- a/framework/test/Volo.Abp.MultiTenancy.Tests/Volo.Abp.MultiTenancy.Tests.csproj +++ b/framework/test/Volo.Abp.MultiTenancy.Tests/Volo.Abp.MultiTenancy.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/framework/test/Volo.Abp.Security.Tests/Volo.Abp.Security.Tests.csproj b/framework/test/Volo.Abp.Security.Tests/Volo.Abp.Security.Tests.csproj index 7fabca78ba..5339246c52 100644 --- a/framework/test/Volo.Abp.Security.Tests/Volo.Abp.Security.Tests.csproj +++ b/framework/test/Volo.Abp.Security.Tests/Volo.Abp.Security.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/framework/test/Volo.Abp.Serialization.Tests/Volo.Abp.Serialization.Tests.csproj b/framework/test/Volo.Abp.Serialization.Tests/Volo.Abp.Serialization.Tests.csproj index a9fe791822..99db6083c2 100644 --- a/framework/test/Volo.Abp.Serialization.Tests/Volo.Abp.Serialization.Tests.csproj +++ b/framework/test/Volo.Abp.Serialization.Tests/Volo.Abp.Serialization.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/test/Volo.Abp.Settings.Tests/Volo.Abp.Settings.Tests.csproj b/framework/test/Volo.Abp.Settings.Tests/Volo.Abp.Settings.Tests.csproj index 7f83c36c9a..1e9bd3f4a0 100644 --- a/framework/test/Volo.Abp.Settings.Tests/Volo.Abp.Settings.Tests.csproj +++ b/framework/test/Volo.Abp.Settings.Tests/Volo.Abp.Settings.Tests.csproj @@ -16,7 +16,7 @@ - + diff --git a/framework/test/Volo.Abp.TestApp.Tests/Volo.Abp.TestApp.Tests.csproj b/framework/test/Volo.Abp.TestApp.Tests/Volo.Abp.TestApp.Tests.csproj index e63096f8c4..3985910708 100644 --- a/framework/test/Volo.Abp.TestApp.Tests/Volo.Abp.TestApp.Tests.csproj +++ b/framework/test/Volo.Abp.TestApp.Tests/Volo.Abp.TestApp.Tests.csproj @@ -13,7 +13,7 @@ - + diff --git a/framework/test/Volo.Abp.TestApp/Volo.Abp.TestApp.csproj b/framework/test/Volo.Abp.TestApp/Volo.Abp.TestApp.csproj index 243bd70a8c..0cb921f63a 100644 --- a/framework/test/Volo.Abp.TestApp/Volo.Abp.TestApp.csproj +++ b/framework/test/Volo.Abp.TestApp/Volo.Abp.TestApp.csproj @@ -17,7 +17,7 @@ - + diff --git a/framework/test/Volo.Abp.UI.Navigation.Tests/Volo.Abp.UI.Navigation.Tests.csproj b/framework/test/Volo.Abp.UI.Navigation.Tests/Volo.Abp.UI.Navigation.Tests.csproj index b308eae3a2..10318fbf90 100644 --- a/framework/test/Volo.Abp.UI.Navigation.Tests/Volo.Abp.UI.Navigation.Tests.csproj +++ b/framework/test/Volo.Abp.UI.Navigation.Tests/Volo.Abp.UI.Navigation.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/framework/test/Volo.Abp.Uow.Tests/Volo.Abp.Uow.Tests.csproj b/framework/test/Volo.Abp.Uow.Tests/Volo.Abp.Uow.Tests.csproj index 40575e7b1c..f3dede4b21 100644 --- a/framework/test/Volo.Abp.Uow.Tests/Volo.Abp.Uow.Tests.csproj +++ b/framework/test/Volo.Abp.Uow.Tests/Volo.Abp.Uow.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/test/Volo.Abp.Validation.Tests/Volo.Abp.Validation.Tests.csproj b/framework/test/Volo.Abp.Validation.Tests/Volo.Abp.Validation.Tests.csproj index 5891413963..60308b96ae 100644 --- a/framework/test/Volo.Abp.Validation.Tests/Volo.Abp.Validation.Tests.csproj +++ b/framework/test/Volo.Abp.Validation.Tests/Volo.Abp.Validation.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo.Abp.VirtualFileSystem.Tests.csproj b/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo.Abp.VirtualFileSystem.Tests.csproj index 7f0be985bf..895b8231ce 100644 --- a/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo.Abp.VirtualFileSystem.Tests.csproj +++ b/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo.Abp.VirtualFileSystem.Tests.csproj @@ -18,7 +18,7 @@ - + diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests.csproj b/modules/audit-logging/test/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests.csproj index 247752f848..32ee40e070 100644 --- a/modules/audit-logging/test/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests.csproj +++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.HangFire/Volo.Abp.BackgroundJobs.DemoApp.HangFire.csproj b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.HangFire/Volo.Abp.BackgroundJobs.DemoApp.HangFire.csproj index a080318e11..8134b0c512 100644 --- a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.HangFire/Volo.Abp.BackgroundJobs.DemoApp.HangFire.csproj +++ b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.HangFire/Volo.Abp.BackgroundJobs.DemoApp.HangFire.csproj @@ -6,7 +6,7 @@ - + diff --git a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj index c823e9a53a..3540aa8e9c 100644 --- a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj +++ b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj @@ -6,7 +6,10 @@ - + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.Domain.Tests/Volo.Abp.BackgroundJobs.Domain.Tests.csproj b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.Domain.Tests/Volo.Abp.BackgroundJobs.Domain.Tests.csproj index 07501ec85f..a8ff824305 100644 --- a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.Domain.Tests/Volo.Abp.BackgroundJobs.Domain.Tests.csproj +++ b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.Domain.Tests/Volo.Abp.BackgroundJobs.Domain.Tests.csproj @@ -12,7 +12,7 @@ - + diff --git a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests.csproj b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests.csproj index 6fad02af58..722d94f88e 100644 --- a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests.csproj +++ b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests.csproj @@ -13,10 +13,10 @@ - - - - + + + + diff --git a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo.Abp.BackgroundJobs.MongoDB.Tests.csproj b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo.Abp.BackgroundJobs.MongoDB.Tests.csproj index 00c9d6ffc2..f3fb433d10 100644 --- a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo.Abp.BackgroundJobs.MongoDB.Tests.csproj +++ b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo.Abp.BackgroundJobs.MongoDB.Tests.csproj @@ -13,8 +13,8 @@ - - + + diff --git a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.TestBase/Volo.Abp.BackgroundJobs.TestBase.csproj b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.TestBase/Volo.Abp.BackgroundJobs.TestBase.csproj index 9c9e420c65..1f4db1af41 100644 --- a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.TestBase/Volo.Abp.BackgroundJobs.TestBase.csproj +++ b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.TestBase/Volo.Abp.BackgroundJobs.TestBase.csproj @@ -14,8 +14,8 @@ - - + + diff --git a/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo.Blogging.EntityFrameworkCore.Tests.csproj b/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo.Blogging.EntityFrameworkCore.Tests.csproj index feb5448b1e..8f9b464a46 100644 --- a/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo.Blogging.EntityFrameworkCore.Tests.csproj +++ b/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo.Blogging.EntityFrameworkCore.Tests.csproj @@ -10,7 +10,7 @@ - + diff --git a/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo.Docs.EntityFrameworkCore.Tests.csproj b/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo.Docs.EntityFrameworkCore.Tests.csproj index 666c1e813f..71a466828b 100644 --- a/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo.Docs.EntityFrameworkCore.Tests.csproj +++ b/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo.Docs.EntityFrameworkCore.Tests.csproj @@ -8,8 +8,8 @@ - - + + diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests.csproj b/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests.csproj index 27d7612baa..5566f756d8 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests.csproj +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests.csproj @@ -15,8 +15,8 @@ - - + + diff --git a/modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo.Abp.Identity.EntityFrameworkCore.Tests.csproj b/modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo.Abp.Identity.EntityFrameworkCore.Tests.csproj index 8d4ce0c3fc..7a9219d556 100644 --- a/modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo.Abp.Identity.EntityFrameworkCore.Tests.csproj +++ b/modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo.Abp.Identity.EntityFrameworkCore.Tests.csproj @@ -22,8 +22,8 @@ - - + + diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests.csproj b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests.csproj index faa5eb21aa..5a12ee07ed 100644 --- a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests.csproj +++ b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests.csproj @@ -20,7 +20,7 @@ - + diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj index ca64ea94f2..8285a006ed 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj @@ -17,7 +17,7 @@ - + diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo.Abp.PermissionManagement.Tests.csproj b/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo.Abp.PermissionManagement.Tests.csproj index a0ba681b8d..f6846f3678 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo.Abp.PermissionManagement.Tests.csproj +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo.Abp.PermissionManagement.Tests.csproj @@ -17,7 +17,7 @@ - + diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests.csproj b/modules/setting-management/test/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests.csproj index 43e0ceb087..53ff012ea6 100644 --- a/modules/setting-management/test/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests.csproj +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests.csproj @@ -19,7 +19,7 @@ - + diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.csproj b/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.csproj index 6a43666860..85d334e610 100644 --- a/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.csproj +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.csproj @@ -18,8 +18,8 @@ - - + + diff --git a/modules/users/test/Volo.Abp.Users.EntityFrameworkCore.Tests/Volo.Abp.Users.EntityFrameworkCore.Tests.csproj b/modules/users/test/Volo.Abp.Users.EntityFrameworkCore.Tests/Volo.Abp.Users.EntityFrameworkCore.Tests.csproj index 8571a8bd34..1bbdc59392 100644 --- a/modules/users/test/Volo.Abp.Users.EntityFrameworkCore.Tests/Volo.Abp.Users.EntityFrameworkCore.Tests.csproj +++ b/modules/users/test/Volo.Abp.Users.EntityFrameworkCore.Tests/Volo.Abp.Users.EntityFrameworkCore.Tests.csproj @@ -19,7 +19,7 @@ - + diff --git a/samples/BookStore/test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.csproj b/samples/BookStore/test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.csproj index 6813e17ee6..31415fb6c8 100644 --- a/samples/BookStore/test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.csproj +++ b/samples/BookStore/test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.csproj @@ -22,7 +22,7 @@ - + diff --git a/samples/MicroserviceDemo/modules/product/test/ProductManagement.EntityFrameworkCore.Tests/ProductManagement.EntityFrameworkCore.Tests.csproj b/samples/MicroserviceDemo/modules/product/test/ProductManagement.EntityFrameworkCore.Tests/ProductManagement.EntityFrameworkCore.Tests.csproj index d322f0e7b3..a5d1b1b349 100644 --- a/samples/MicroserviceDemo/modules/product/test/ProductManagement.EntityFrameworkCore.Tests/ProductManagement.EntityFrameworkCore.Tests.csproj +++ b/samples/MicroserviceDemo/modules/product/test/ProductManagement.EntityFrameworkCore.Tests/ProductManagement.EntityFrameworkCore.Tests.csproj @@ -13,8 +13,8 @@ - - + + diff --git a/templates/module/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj b/templates/module/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj index 495c869ba8..07fb1b020e 100644 --- a/templates/module/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj +++ b/templates/module/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj @@ -15,8 +15,8 @@ - - + + diff --git a/templates/mvc/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj b/templates/mvc/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj index 808ee9f1fe..2a05c9b871 100644 --- a/templates/mvc/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj +++ b/templates/mvc/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj @@ -22,7 +22,7 @@ - + diff --git a/templates/service/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj b/templates/service/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj index 495c869ba8..07fb1b020e 100644 --- a/templates/service/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj +++ b/templates/service/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj @@ -15,8 +15,8 @@ - - + + From 5ba01578e67548ba4c89673999215d3afcc89a7e Mon Sep 17 00:00:00 2001 From: Dong Guo Date: Sun, 28 Apr 2019 10:51:59 +0800 Subject: [PATCH 48/57] add sqlite support --- framework/Volo.Abp.sln | 18 +++++++---- ...Volo.Abp.EntityFrameworkCore.Sqlite.csproj | 24 ++++++++++++++ ...extConfigurationContextSqliteExtensions.cs | 27 ++++++++++++++++ .../AbpDbContextOptionsSqliteExtensions.cs | 32 +++++++++++++++++++ .../AbpEntityFrameworkCoreSqliteModule.cs | 14 ++++++++ 5 files changed, 109 insertions(+), 6 deletions(-) create mode 100644 framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj create mode 100644 framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextSqliteExtensions.cs create mode 100644 framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsSqliteExtensions.cs create mode 100644 framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/Sqlite/AbpEntityFrameworkCoreSqliteModule.cs diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index 10be5a757d..7987604e98 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -1,4 +1,3 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.28803.156 @@ -225,6 +224,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.FluentValidation", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.FluentValidation.Tests", "test\Volo.Abp.FluentValidation.Tests\Volo.Abp.FluentValidation.Tests.csproj", "{E9E1714F-7ED2-4BD1-BA4A-BA06E398288A}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.EntityFrameworkCore.Sqlite", "src\Volo.Abp.EntityFrameworkCore.Sqlite\Volo.Abp.EntityFrameworkCore.Sqlite.csproj", "{58CF8957-5045-4F81-884D-72DF48F721CC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -655,6 +656,10 @@ Global {46C6336C-A1D8-4858-98CE-6F4C698C5A77}.Debug|Any CPU.Build.0 = Debug|Any CPU {46C6336C-A1D8-4858-98CE-6F4C698C5A77}.Release|Any CPU.ActiveCfg = Release|Any CPU {46C6336C-A1D8-4858-98CE-6F4C698C5A77}.Release|Any CPU.Build.0 = Release|Any CPU + {69168816-4394-4DDA-BB6B-C21983D37F0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {69168816-4394-4DDA-BB6B-C21983D37F0B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {69168816-4394-4DDA-BB6B-C21983D37F0B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {69168816-4394-4DDA-BB6B-C21983D37F0B}.Release|Any CPU.Build.0 = Release|Any CPU {43D5FE61-ECBF-4B16-AD95-0043E18EB93A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {43D5FE61-ECBF-4B16-AD95-0043E18EB93A}.Debug|Any CPU.Build.0 = Debug|Any CPU {43D5FE61-ECBF-4B16-AD95-0043E18EB93A}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -663,10 +668,10 @@ Global {E9E1714F-7ED2-4BD1-BA4A-BA06E398288A}.Debug|Any CPU.Build.0 = Debug|Any CPU {E9E1714F-7ED2-4BD1-BA4A-BA06E398288A}.Release|Any CPU.ActiveCfg = Release|Any CPU {E9E1714F-7ED2-4BD1-BA4A-BA06E398288A}.Release|Any CPU.Build.0 = Release|Any CPU - {69168816-4394-4DDA-BB6B-C21983D37F0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {69168816-4394-4DDA-BB6B-C21983D37F0B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {69168816-4394-4DDA-BB6B-C21983D37F0B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {69168816-4394-4DDA-BB6B-C21983D37F0B}.Release|Any CPU.Build.0 = Release|Any CPU + {58CF8957-5045-4F81-884D-72DF48F721CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {58CF8957-5045-4F81-884D-72DF48F721CC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {58CF8957-5045-4F81-884D-72DF48F721CC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {58CF8957-5045-4F81-884D-72DF48F721CC}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -778,9 +783,10 @@ Global {575BEFA1-19C2-49B1-8D31-B5D4472328DE} = {447C8A77-E5F0-4538-8687-7383196D04EA} {6C161F55-54B6-42A5-B177-3B0ED50323C1} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {46C6336C-A1D8-4858-98CE-6F4C698C5A77} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {69168816-4394-4DDA-BB6B-C21983D37F0B} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {43D5FE61-ECBF-4B16-AD95-0043E18EB93A} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {E9E1714F-7ED2-4BD1-BA4A-BA06E398288A} = {447C8A77-E5F0-4538-8687-7383196D04EA} - {69168816-4394-4DDA-BB6B-C21983D37F0B} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {58CF8957-5045-4F81-884D-72DF48F721CC} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj new file mode 100644 index 0000000000..cf6dad2b43 --- /dev/null +++ b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj @@ -0,0 +1,24 @@ + + + + + + netstandard2.0 + Volo.Abp.EntityFrameworkCore.Sqlite + Volo.Abp.EntityFrameworkCore.Sqlite + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + false + false + false + + + + + + + + + + + + diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextSqliteExtensions.cs b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextSqliteExtensions.cs new file mode 100644 index 0000000000..cb531e2a44 --- /dev/null +++ b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextSqliteExtensions.cs @@ -0,0 +1,27 @@ +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Text; +using JetBrains.Annotations; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Volo.Abp.EntityFrameworkCore.DependencyInjection; + +namespace Volo.Abp.EntityFrameworkCore +{ + public static class AbpDbContextConfigurationContextSqliteExtensions + { + public static DbContextOptionsBuilder UseSqlite( + [NotNull] this AbpDbContextConfigurationContext context, + [CanBeNull] Action sqliteOptionsAction = null) + { + if (context.ExistingConnection != null) + { + return context.DbContextOptions.UseSqlite(context.ExistingConnection, sqliteOptionsAction); + } + else + { + return context.DbContextOptions.UseSqlite(context.ConnectionString, sqliteOptionsAction); + } + } + } +} diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsSqliteExtensions.cs b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsSqliteExtensions.cs new file mode 100644 index 0000000000..bf861539e9 --- /dev/null +++ b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsSqliteExtensions.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Text; +using JetBrains.Annotations; +using Microsoft.EntityFrameworkCore.Infrastructure; + +namespace Volo.Abp.EntityFrameworkCore +{ + public static class AbpDbContextOptionsSqliteExtensions + { + public static void UseSqlite( + [NotNull] this AbpDbContextOptions options, + [CanBeNull] Action sqliteOptionsAction = null) + { + options.Configure(context => + { + context.UseSqlite(sqliteOptionsAction); + }); + } + + public static void UseSqlite( + [NotNull] this AbpDbContextOptions options, + [CanBeNull] Action sqliteOptionsAction = null) + where TDbContext : AbpDbContext + { + options.Configure(context => + { + context.UseSqlite(sqliteOptionsAction); + }); + } + } +} diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/Sqlite/AbpEntityFrameworkCoreSqliteModule.cs b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/Sqlite/AbpEntityFrameworkCoreSqliteModule.cs new file mode 100644 index 0000000000..f6d8a0ada1 --- /dev/null +++ b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/Sqlite/AbpEntityFrameworkCoreSqliteModule.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Volo.Abp.Modularity; + +namespace Volo.Abp.EntityFrameworkCore.Sqlite +{ + [DependsOn( + typeof(AbpEntityFrameworkCoreModule) + )] + public class AbpEntityFrameworkCoreSqliteModule : AbpModule + { + } +} From 714da91ac6c3a7298f75fa3cdd6a1a50985a6d97 Mon Sep 17 00:00:00 2001 From: maliming Date: Sun, 28 Apr 2019 12:37:00 +0800 Subject: [PATCH 49/57] Beautify the sqlite project code. --- .../AbpDbContextConfigurationContextSqliteExtensions.cs | 4 +--- .../AbpDbContextOptionsSqliteExtensions.cs | 4 +--- .../Sqlite/AbpEntityFrameworkCoreSqliteModule.cs | 6 ++---- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextSqliteExtensions.cs b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextSqliteExtensions.cs index cb531e2a44..6fd69fa42e 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextSqliteExtensions.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextSqliteExtensions.cs @@ -1,8 +1,6 @@ -using Microsoft.EntityFrameworkCore; using System; -using System.Collections.Generic; -using System.Text; using JetBrains.Annotations; +using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Volo.Abp.EntityFrameworkCore.DependencyInjection; diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsSqliteExtensions.cs b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsSqliteExtensions.cs index bf861539e9..68944194d1 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsSqliteExtensions.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsSqliteExtensions.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System; using JetBrains.Annotations; using Microsoft.EntityFrameworkCore.Infrastructure; diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/Sqlite/AbpEntityFrameworkCoreSqliteModule.cs b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/Sqlite/AbpEntityFrameworkCoreSqliteModule.cs index f6d8a0ada1..8be6927e79 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/Sqlite/AbpEntityFrameworkCoreSqliteModule.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/Sqlite/AbpEntityFrameworkCoreSqliteModule.cs @@ -1,14 +1,12 @@ -using System; -using System.Collections.Generic; -using System.Text; using Volo.Abp.Modularity; namespace Volo.Abp.EntityFrameworkCore.Sqlite { [DependsOn( typeof(AbpEntityFrameworkCoreModule) - )] + )] public class AbpEntityFrameworkCoreSqliteModule : AbpModule { + } } From 5984528f0585fdd69439da2ae9212949448e0e22 Mon Sep 17 00:00:00 2001 From: maliming Date: Sun, 28 Apr 2019 12:41:24 +0800 Subject: [PATCH 50/57] Add Sqlite project to common.ps1. --- nupkg/common.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/nupkg/common.ps1 b/nupkg/common.ps1 index e83acaa57c..6ebae9a0b5 100644 --- a/nupkg/common.ps1 +++ b/nupkg/common.ps1 @@ -63,6 +63,7 @@ $projects = ( "framework/src/Volo.Abp.EntityFrameworkCore.SqlServer", "framework/src/Volo.Abp.EntityFrameworkCore.MySQL", "framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql", + "framework/src/Volo.Abp.EntityFrameworkCore.Sqlite", "framework/src/Volo.Abp.EventBus", "framework/src/Volo.Abp.EventBus.RabbitMQ", "framework/src/Volo.Abp.Features", From 3d06fa0a1571426fcd09069fbce793700bf9272f Mon Sep 17 00:00:00 2001 From: maliming Date: Sun, 28 Apr 2019 13:14:35 +0800 Subject: [PATCH 51/57] Undo the BookStore code change (0.17 not released) --- .../Permissions/BookStorePermissions.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/samples/BookStore/src/Acme.BookStore.Application/Permissions/BookStorePermissions.cs b/samples/BookStore/src/Acme.BookStore.Application/Permissions/BookStorePermissions.cs index ea8a26d6ef..b1ec575904 100644 --- a/samples/BookStore/src/Acme.BookStore.Application/Permissions/BookStorePermissions.cs +++ b/samples/BookStore/src/Acme.BookStore.Application/Permissions/BookStorePermissions.cs @@ -1,5 +1,4 @@ using System; -using Volo.Abp.Reflection; namespace Acme.BookStore.Permissions { @@ -13,7 +12,7 @@ namespace Acme.BookStore.Permissions public static string[] GetAll() { //Return an array of all permissions - return ReflectionHelper.GetPublicConstantsRecursively(typeof(BookStorePermissions)); + return Array.Empty(); } } } \ No newline at end of file From 13b70c1a58fd0eb0e66aabb59066e8c974dc148a Mon Sep 17 00:00:00 2001 From: cuibty Date: Sun, 28 Apr 2019 15:25:26 +0800 Subject: [PATCH 52/57] fix zh-Hans doc sample code --- docs/zh-Hans/Getting-Started-AspNetCore-Application.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/zh-Hans/Getting-Started-AspNetCore-Application.md b/docs/zh-Hans/Getting-Started-AspNetCore-Application.md index d0733bb140..f08af4744f 100644 --- a/docs/zh-Hans/Getting-Started-AspNetCore-Application.md +++ b/docs/zh-Hans/Getting-Started-AspNetCore-Application.md @@ -77,11 +77,11 @@ namespace BasicAspNetCoreApplication { public class Startup { - public IServiceProvider ConfigureServices(ServiceConfigurationContext context) + public IServiceProvider ConfigureServices(IServiceCollection services) { - context.Services.AddApplication(); + services.AddApplication(); - return context.Services.BuildServiceProviderFromFactory(); + return services.BuildServiceProviderFromFactory(); } public void Configure(IApplicationBuilder app) From 438e133f1d4faa6c1d5dd2e70e099a2306bf018d Mon Sep 17 00:00:00 2001 From: CdLian <970433771@qq.com> Date: Sun, 28 Apr 2019 15:55:40 +0800 Subject: [PATCH 53/57] Update Data-Transfer-Objects.md Fix spelling mistake. --- docs/zh-Hans/Best-Practices/Data-Transfer-Objects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh-Hans/Best-Practices/Data-Transfer-Objects.md b/docs/zh-Hans/Best-Practices/Data-Transfer-Objects.md index e0db48397e..0c6017e6e7 100644 --- a/docs/zh-Hans/Best-Practices/Data-Transfer-Objects.md +++ b/docs/zh-Hans/Best-Practices/Data-Transfer-Objects.md @@ -5,4 +5,4 @@ * **推荐** 定义 **public getter 和 setter** 的DTO成员 . * **推荐** 使用 **data annotations** **验证** service输入DTO的属性. * **不推荐** 在DTO中添加任何 **逻辑**, 在必要的时候可以实现 `IValidatableObject` 接口. -* **推荐** 为所有的DTO标记 **[Serializable]** Attribute. 因为它们已经是可序列化的, 开人发员可能会希望进行二进制序列化. \ No newline at end of file +* **推荐** 为所有的DTO标记 **[Serializable]** Attribute. 因为它们已经是可序列化的, 开发人员可能会希望进行二进制序列化. From f34a36d2f1b654d2d78626fa2f3faa9c034ee780 Mon Sep 17 00:00:00 2001 From: bbakermmc Date: Mon, 29 Apr 2019 14:48:28 -0400 Subject: [PATCH 54/57] Update abp.resourcemapping.js missing ; --- .../src/MyCompanyName.MyProjectName.Web/abp.resourcemapping.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/abp.resourcemapping.js b/templates/mvc/src/MyCompanyName.MyProjectName.Web/abp.resourcemapping.js index 96f7c92778..122e8e926a 100644 --- a/templates/mvc/src/MyCompanyName.MyProjectName.Web/abp.resourcemapping.js +++ b/templates/mvc/src/MyCompanyName.MyProjectName.Web/abp.resourcemapping.js @@ -5,4 +5,4 @@ mappings: { } -} \ No newline at end of file +}; From fc5ab383eec6d00d8168ab40bdefe27aafa16873 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Tue, 30 Apr 2019 10:07:00 +0300 Subject: [PATCH 55/57] Resolved #1079: Use static value instead of hard-coded MaxResultCount. --- .../Volo/Abp/Application/Dtos/LimitedResultRequestDto.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/LimitedResultRequestDto.cs b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/LimitedResultRequestDto.cs index b3ed6a23cb..0931d090f3 100644 --- a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/LimitedResultRequestDto.cs +++ b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/LimitedResultRequestDto.cs @@ -9,7 +9,9 @@ namespace Volo.Abp.Application.Dtos [Serializable] public class LimitedResultRequestDto : ILimitedResultRequest { + public static int DefaultMaxResultCount { get; set; } = 10; + [Range(1, int.MaxValue)] - public virtual int MaxResultCount { get; set; } = 10; + public virtual int MaxResultCount { get; set; } = DefaultMaxResultCount; } } \ No newline at end of file From 6ba0ad6618e89f9f5c50cc4140d3f0b111abdd3a Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Tue, 30 Apr 2019 11:06:14 +0300 Subject: [PATCH 56/57] Resolved #1080: Ignore entities on EntityToEtoMapper for those don't implement IEntity. --- .../Entities/Events/Distributed/EntityEto.cs | 5 +- .../Events/Distributed/EntityToEtoMapper.cs | 7 +- .../Events/Distributed/IEntityToEtoMapper.cs | 5 +- .../Events/EntityChangeEventHelper.cs | 66 ++++++++++++++++--- 4 files changed, 68 insertions(+), 15 deletions(-) diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityEto.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityEto.cs index aa2a6e1c8f..d5f0a7dc2d 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityEto.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityEto.cs @@ -5,6 +5,8 @@ namespace Volo.Abp.Domain.Entities.Events.Distributed [Serializable] public class EntityEto : EtoBase { + public string EntityType { get; set; } + public string KeysAsString { get; set; } public EntityEto() @@ -12,8 +14,9 @@ namespace Volo.Abp.Domain.Entities.Events.Distributed } - public EntityEto(string keysAsString) + public EntityEto(string entityType, string keysAsString) { + EntityType = entityType; KeysAsString = keysAsString; } } diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityToEtoMapper.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityToEtoMapper.cs index fd7cab1f4f..5b386599ef 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityToEtoMapper.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityToEtoMapper.cs @@ -1,6 +1,5 @@ -using System; +using Microsoft.Extensions.Options; using System.Collections.Generic; -using Microsoft.Extensions.Options; using Volo.Abp.DependencyInjection; using Volo.Abp.DynamicProxy; using Volo.Abp.EventBus.Distributed; @@ -28,7 +27,7 @@ namespace Volo.Abp.Domain.Entities.Events.Distributed var entity = entityObj as IEntity; if (entity == null) { - throw new ArgumentException($"{nameof(entityObj)} should be an entity and implement the '{typeof(IEntity).AssemblyQualifiedName}' interface!"); + return null; } var entityType = ProxyHelper.UnProxy(entity).GetType(); @@ -36,7 +35,7 @@ namespace Volo.Abp.Domain.Entities.Events.Distributed if (etoType == null) { var keys = entity.GetKeys().JoinAsString(","); - return new EntityEto(keys); + return new EntityEto(entityType.FullName, keys); } //TODO: Also add KeysAsString property to resulting json for compatibility with the EntityEto! diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IEntityToEtoMapper.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IEntityToEtoMapper.cs index e33e6751e8..ceefb311ef 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IEntityToEtoMapper.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IEntityToEtoMapper.cs @@ -1,7 +1,10 @@ -namespace Volo.Abp.Domain.Entities.Events.Distributed +using JetBrains.Annotations; + +namespace Volo.Abp.Domain.Entities.Events.Distributed { public interface IEntityToEtoMapper { + [CanBeNull] object Map(object entityObj); } } diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/EntityChangeEventHelper.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/EntityChangeEventHelper.cs index dc4edea364..06554d451e 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/EntityChangeEventHelper.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/EntityChangeEventHelper.cs @@ -48,35 +48,83 @@ namespace Volo.Abp.Domain.Entities.Events public virtual async Task TriggerEntityCreatingEventAsync(object entity) { - await TriggerEventWithEntity(LocalEventBus, typeof(EntityCreatingEventData<>), entity, true); + await TriggerEventWithEntity( + LocalEventBus, + typeof(EntityCreatingEventData<>), + entity, + true + ); } public virtual async Task TriggerEntityCreatedEventOnUowCompletedAsync(object entity) { - await TriggerEventWithEntity(LocalEventBus, typeof(EntityCreatedEventData<>), entity, false); - await TriggerEventWithEntity(DistributedEventBus, typeof(EntityCreatedEto<>), EntityToEtoMapper.Map(entity), false); + await TriggerEventWithEntity( + LocalEventBus, + typeof(EntityCreatedEventData<>), + entity, + false + ); + + await TriggerEventWithEntity( + DistributedEventBus, + typeof(EntityCreatedEto<>), + EntityToEtoMapper.Map(entity), + false + ); } public virtual async Task TriggerEntityUpdatingEventAsync(object entity) { - await TriggerEventWithEntity(LocalEventBus, typeof(EntityUpdatingEventData<>), entity, true); + await TriggerEventWithEntity( + LocalEventBus, + typeof(EntityUpdatingEventData<>), + entity, + true + ); } public virtual async Task TriggerEntityUpdatedEventOnUowCompletedAsync(object entity) { - await TriggerEventWithEntity(LocalEventBus, typeof(EntityUpdatedEventData<>), entity, false); - await TriggerEventWithEntity(DistributedEventBus, typeof(EntityUpdatedEto<>), EntityToEtoMapper.Map(entity), false); + await TriggerEventWithEntity( + LocalEventBus, + typeof(EntityUpdatedEventData<>), + entity, + false + ); + + await TriggerEventWithEntity( + DistributedEventBus, + typeof(EntityUpdatedEto<>), + EntityToEtoMapper.Map(entity), + false + ); } public virtual async Task TriggerEntityDeletingEventAsync(object entity) { - await TriggerEventWithEntity(LocalEventBus, typeof(EntityDeletingEventData<>), entity, true); + await TriggerEventWithEntity( + LocalEventBus, + typeof(EntityDeletingEventData<>), + entity, + true + ); } public virtual async Task TriggerEntityDeletedEventOnUowCompletedAsync(object entity) { - await TriggerEventWithEntity(LocalEventBus, typeof(EntityDeletedEventData<>), entity, false); - await TriggerEventWithEntity(DistributedEventBus, typeof(EntityDeletedEto<>), EntityToEtoMapper.Map(entity), false); + await TriggerEventWithEntity( + LocalEventBus, + typeof(EntityDeletedEventData<>), + entity, + false + ); + + await TriggerEventWithEntity( + DistributedEventBus, + typeof(EntityDeletedEto<>), + EntityToEtoMapper.Map(entity), + false + ); } protected virtual async Task TriggerEventsInternalAsync(EntityChangeReport changeReport) From 230821750b7c54d296652f2f9d962efa63791281 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Tue, 30 Apr 2019 11:19:09 +0300 Subject: [PATCH 57/57] Check for null. --- .../Events/EntityChangeEventHelper.cs | 48 ++++++++++++------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/EntityChangeEventHelper.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/EntityChangeEventHelper.cs index 06554d451e..c9219feffc 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/EntityChangeEventHelper.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/EntityChangeEventHelper.cs @@ -65,12 +65,16 @@ namespace Volo.Abp.Domain.Entities.Events false ); - await TriggerEventWithEntity( - DistributedEventBus, - typeof(EntityCreatedEto<>), - EntityToEtoMapper.Map(entity), - false - ); + var eto = EntityToEtoMapper.Map(entity); + if (eto != null) + { + await TriggerEventWithEntity( + DistributedEventBus, + typeof(EntityCreatedEto<>), + eto, + false + ); + } } public virtual async Task TriggerEntityUpdatingEventAsync(object entity) @@ -92,12 +96,16 @@ namespace Volo.Abp.Domain.Entities.Events false ); - await TriggerEventWithEntity( - DistributedEventBus, - typeof(EntityUpdatedEto<>), - EntityToEtoMapper.Map(entity), - false - ); + var eto = EntityToEtoMapper.Map(entity); + if (eto != null) + { + await TriggerEventWithEntity( + DistributedEventBus, + typeof(EntityUpdatedEto<>), + eto, + false + ); + } } public virtual async Task TriggerEntityDeletingEventAsync(object entity) @@ -119,12 +127,16 @@ namespace Volo.Abp.Domain.Entities.Events false ); - await TriggerEventWithEntity( - DistributedEventBus, - typeof(EntityDeletedEto<>), - EntityToEtoMapper.Map(entity), - false - ); + var eto = EntityToEtoMapper.Map(entity); + if (eto != null) + { + await TriggerEventWithEntity( + DistributedEventBus, + typeof(EntityDeletedEto<>), + EntityToEtoMapper.Map(entity), + false + ); + } } protected virtual async Task TriggerEventsInternalAsync(EntityChangeReport changeReport)