+
仅当用户具有`AbpIdentity.Roles`权限时,此内容才可见.
```
@@ -58,6 +58,8 @@ export class YourComponent {
将 `requiredPolicy` 添加到路由模块中的 `routes`属性.
```js
+import { PermissionGuard } from '@abp/ng.core';
+// ...
const routes: Routes = [
{
path: 'path',
diff --git a/docs/zh-Hans/docs-nav.json b/docs/zh-Hans/docs-nav.json
index c14355497b..04da437b7b 100644
--- a/docs/zh-Hans/docs-nav.json
+++ b/docs/zh-Hans/docs-nav.json
@@ -154,16 +154,23 @@
]
},
{
- "text": "事件",
+ "text": "事件总线",
"items": [
{
- "text": "本地 Event Bus"
+ "text": "概述",
+ "path": "Event-Bus.md"
+ },
+ {
+ "text": "本地 Event Bus",
+ "path": "Local-Event-Bus.md"
},
{
"text": "分布式 Event Bus",
+ "path": "Distributed-Event-Bus.md",
"items": [
{
- "text": "RabbitMQ 集成"
+ "text": "RabbitMQ 集成",
+ "path": "Distributed-Event-Bus-RabbitMQ-Integration.md"
}
]
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj b/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj
index 544099c653..af317c263c 100644
--- a/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj
+++ b/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/Select2/Select2ScriptContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/Select2/Select2ScriptContributor.cs
index 1e5f138f97..81696d5e71 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/Select2/Select2ScriptContributor.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/Select2/Select2ScriptContributor.cs
@@ -12,6 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.Select2
{
//TODO: Add select2.full.min.js or localize!
context.Files.AddIfNotContains("/libs/select2/js/select2.min.js");
+ context.Files.AddIfNotContains("/libs/select2/js/select2-bootstrap-modal-patch.js");
}
}
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo.Abp.AspNetCore.Mvc.UI.csproj b/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo.Abp.AspNetCore.Mvc.UI.csproj
index d14d639fbb..99a9357392 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo.Abp.AspNetCore.Mvc.UI.csproj
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo.Abp.AspNetCore.Mvc.UI.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 90500a456b..47899625d4 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
@@ -26,9 +26,9 @@
-
-
-
+
+
+
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Authentication/ChallengeAccountController.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Authentication/ChallengeAccountController.cs
index 15854e10a6..781866232b 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Authentication/ChallengeAccountController.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Authentication/ChallengeAccountController.cs
@@ -52,6 +52,21 @@ namespace Volo.Abp.AspNetCore.Mvc.Authentication
return new SignOutResult(ChallengeAuthenticationSchemas);
}
+ [HttpGet]
+ public async Task
FrontChannelLogout(string sid)
+ {
+ if (User.Identity.IsAuthenticated)
+ {
+ var currentSid = User.FindFirst("sid").Value ?? string.Empty;
+ if (string.Equals(currentSid, sid, StringComparison.Ordinal))
+ {
+ await Logout();
+ }
+ }
+
+ return NoContent();
+ }
+
protected RedirectResult RedirectSafely(string returnUrl, string returnUrlHash = null)
{
return Redirect(GetRedirectUrl(returnUrl, returnUrlHash));
diff --git a/framework/src/Volo.Abp.AspNetCore.Serilog/Volo.Abp.AspNetCore.Serilog.csproj b/framework/src/Volo.Abp.AspNetCore.Serilog/Volo.Abp.AspNetCore.Serilog.csproj
index b0bb8930df..348aeb0342 100644
--- a/framework/src/Volo.Abp.AspNetCore.Serilog/Volo.Abp.AspNetCore.Serilog.csproj
+++ b/framework/src/Volo.Abp.AspNetCore.Serilog/Volo.Abp.AspNetCore.Serilog.csproj
@@ -22,7 +22,7 @@
-
+
diff --git a/framework/src/Volo.Abp.AspNetCore.TestBase/Volo.Abp.AspNetCore.TestBase.csproj b/framework/src/Volo.Abp.AspNetCore.TestBase/Volo.Abp.AspNetCore.TestBase.csproj
index 2ff1d539a6..a4dcd1c8c5 100644
--- a/framework/src/Volo.Abp.AspNetCore.TestBase/Volo.Abp.AspNetCore.TestBase.csproj
+++ b/framework/src/Volo.Abp.AspNetCore.TestBase/Volo.Abp.AspNetCore.TestBase.csproj
@@ -24,7 +24,7 @@
-
+
diff --git a/framework/src/Volo.Abp.Authorization/Volo.Abp.Authorization.csproj b/framework/src/Volo.Abp.Authorization/Volo.Abp.Authorization.csproj
index e5183688df..b8ff62572b 100644
--- a/framework/src/Volo.Abp.Authorization/Volo.Abp.Authorization.csproj
+++ b/framework/src/Volo.Abp.Authorization/Volo.Abp.Authorization.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj b/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj
index 45cc6e2d94..3c5c275117 100644
--- a/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj
+++ b/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj
@@ -15,9 +15,9 @@
-
-
-
+
+
+
diff --git a/framework/src/Volo.Abp.BlobStoring.Azure/Volo.Abp.BlobStoring.Azure.csproj b/framework/src/Volo.Abp.BlobStoring.Azure/Volo.Abp.BlobStoring.Azure.csproj
index 1e7c51f4fc..6434e1d43c 100644
--- a/framework/src/Volo.Abp.BlobStoring.Azure/Volo.Abp.BlobStoring.Azure.csproj
+++ b/framework/src/Volo.Abp.BlobStoring.Azure/Volo.Abp.BlobStoring.Azure.csproj
@@ -16,7 +16,7 @@
-
+
diff --git a/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo.Abp.BlobStoring.FileSystem.csproj b/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo.Abp.BlobStoring.FileSystem.csproj
index 88fc08e34e..65242db157 100644
--- a/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo.Abp.BlobStoring.FileSystem.csproj
+++ b/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo.Abp.BlobStoring.FileSystem.csproj
@@ -16,7 +16,7 @@
-
+
diff --git a/framework/src/Volo.Abp.Caching/Volo.Abp.Caching.csproj b/framework/src/Volo.Abp.Caching/Volo.Abp.Caching.csproj
index db744f410e..5ee096a493 100644
--- a/framework/src/Volo.Abp.Caching/Volo.Abp.Caching.csproj
+++ b/framework/src/Volo.Abp.Caching/Volo.Abp.Caching.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/framework/src/Volo.Abp.Castle.Core/Volo.Abp.Castle.Core.csproj b/framework/src/Volo.Abp.Castle.Core/Volo.Abp.Castle.Core.csproj
index 24f7fbe682..7e742c0467 100644
--- a/framework/src/Volo.Abp.Castle.Core/Volo.Abp.Castle.Core.csproj
+++ b/framework/src/Volo.Abp.Castle.Core/Volo.Abp.Castle.Core.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj
index 0b9306be91..40eecfd06a 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj
+++ b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj
@@ -16,11 +16,11 @@
-
-
+
+
-
-
+
+
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs
index ca8bfa9bf8..5fe255828e 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs
@@ -63,11 +63,13 @@ namespace Volo.Abp.Cli.Commands
solution = Directory.GetFiles(directory, "*.sln", SearchOption.AllDirectories).FirstOrDefault();
}
+ var checkAll = commandLineArgs.Options.ContainsKey(Options.CheckAll.Long);
+
if (solution != null)
{
var solutionName = Path.GetFileName(solution).RemovePostFix(".sln");
- await _nugetPackagesVersionUpdater.UpdateSolutionAsync(solution, includePreviews);
+ await _nugetPackagesVersionUpdater.UpdateSolutionAsync(solution, includePreviews, checkAll: checkAll);
Logger.LogInformation($"Volo packages are updated in {solutionName} solution.");
return;
@@ -79,7 +81,7 @@ namespace Volo.Abp.Cli.Commands
{
var projectName = Path.GetFileName(project).RemovePostFix(".csproj");
- await _nugetPackagesVersionUpdater.UpdateProjectAsync(project, includePreviews);
+ await _nugetPackagesVersionUpdater.UpdateProjectAsync(project, includePreviews, checkAll: checkAll);
Logger.LogInformation($"Volo packages are updated in {projectName} project.");
return;
@@ -107,6 +109,7 @@ namespace Volo.Abp.Cli.Commands
sb.AppendLine("--nuget (Only updates Nuget packages)");
sb.AppendLine("-sp|--solution-path (Specify the solution path)");
sb.AppendLine("-sn|--solution-name (Specify the solution name)");
+ sb.AppendLine("--check-all (Check the new version of each package separately)");
sb.AppendLine("");
sb.AppendLine("Some examples:");
sb.AppendLine("");
@@ -149,6 +152,11 @@ namespace Volo.Abp.Cli.Commands
public const string Npm = "npm";
public const string NuGet = "nuget";
}
+
+ public static class CheckAll
+ {
+ public const string Long = "check-all";
+ }
}
}
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs
index 1a279fafc7..02ae0040bc 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs
@@ -1,4 +1,5 @@
-using System;
+using System;
+using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -52,34 +53,38 @@ namespace Volo.Abp.Cli.ProjectModification
_npmGlobalPackagesChecker.Check();
- foreach (var file in fileList)
+ var packagesUpdated = new ConcurrentDictionary();
+ async Task UpdateAsync(string file)
{
- var packagesUpdated = await UpdatePackagesInFile(file, includePreviews, switchToStable);
+ var updated = await UpdatePackagesInFile(file, includePreviews, switchToStable);
+ packagesUpdated.TryAdd(file, updated);
+ };
- if (packagesUpdated)
- {
- var fileDirectory = Path.GetDirectoryName(file).EnsureEndsWith(Path.DirectorySeparatorChar);
+ Task.WaitAll(fileList.Select(UpdateAsync).ToArray());
+
+ foreach (var file in packagesUpdated.Where(x => x.Value))
+ {
+ var fileDirectory = Path.GetDirectoryName(file.Key).EnsureEndsWith(Path.DirectorySeparatorChar);
- if (IsAngularProject(fileDirectory))
+ if (IsAngularProject(fileDirectory))
+ {
+ if (includePreviews)
{
- if (includePreviews)
- {
- await CreateNpmrcFileAsync(Path.GetDirectoryName(file));
- }
- else if (switchToStable)
- {
- await DeleteNpmrcFileAsync(Path.GetDirectoryName(file));
- }
+ await CreateNpmrcFileAsync(Path.GetDirectoryName(file.Key));
}
-
- RunYarn(fileDirectory);
-
- if (!IsAngularProject(fileDirectory))
+ else if (switchToStable)
{
- Thread.Sleep(500);
- RunGulp(fileDirectory);
+ await DeleteNpmrcFileAsync(Path.GetDirectoryName(file.Key));
}
}
+
+ RunYarn(fileDirectory);
+
+ if (!IsAngularProject(fileDirectory))
+ {
+ Thread.Sleep(500);
+ RunGulp(fileDirectory);
+ }
}
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs
index fb2a386ef9..9661dceddd 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs
@@ -1,4 +1,5 @@
-using System;
+using System;
+using System.Collections.Generic;
using NuGet.Versioning;
using System.IO;
using System.Linq;
@@ -24,19 +25,47 @@ namespace Volo.Abp.Cli.ProjectModification
Logger = NullLogger.Instance;
}
- public async Task UpdateSolutionAsync(string solutionPath, bool includePreviews = false, bool switchToStable = false)
+ public async Task UpdateSolutionAsync(string solutionPath, bool includePreviews = false, bool switchToStable = false, bool checkAll = false)
{
var projectPaths = ProjectFinder.GetProjectFiles(solutionPath);
- foreach (var filePath in projectPaths)
+ if (checkAll)
{
- await UpdateInternalAsync(filePath, includePreviews, switchToStable);
+ Task.WaitAll(projectPaths.Select(projectPath => UpdateInternalAsync(projectPath, includePreviews, switchToStable)).ToArray());
+ }
+ else
+ {
+ var latestVersionFromNuget = await _nuGetService.GetLatestVersionOrNullAsync("Volo.Abp.Core");
+ var latestVersionFromMyGet = await GetLatestVersionFromMyGet("Volo.Abp.Core");
+
+ async Task UpdateAsync(string filePath)
+ {
+ var fileContent = File.ReadAllText(filePath);
+ var updatedContent = await UpdateVoloPackagesAsync(fileContent, includePreviews, switchToStable, latestVersionFromNuget, latestVersionFromMyGet);
+
+ File.WriteAllText(filePath, updatedContent);
+ }
+
+ Task.WaitAll(projectPaths.Select(UpdateAsync).ToArray());
}
}
- public async Task UpdateProjectAsync(string projectPath, bool includePreviews = false, bool switchToStable = false)
+ public async Task UpdateProjectAsync(string projectPath, bool includePreviews = false, bool switchToStable = false, bool checkAll = false)
{
- await UpdateInternalAsync(projectPath, includePreviews, switchToStable);
+ if (checkAll)
+ {
+ await UpdateInternalAsync(projectPath, includePreviews, switchToStable);
+ }
+ else
+ {
+ var latestVersionFromNuget = await _nuGetService.GetLatestVersionOrNullAsync("Volo.Abp.Core");
+ var latestVersionFromMyGet = await GetLatestVersionFromMyGet("Volo.Abp.Core");
+
+ var fileContent = File.ReadAllText(projectPath);
+ var updatedContent = await UpdateVoloPackagesAsync(fileContent, includePreviews, switchToStable, latestVersionFromNuget, latestVersionFromMyGet);
+
+ File.WriteAllText(projectPath, updatedContent);
+ }
}
protected virtual async Task UpdateInternalAsync(string projectPath, bool includePreviews = false, bool switchToStable = false)
@@ -47,7 +76,7 @@ namespace Volo.Abp.Cli.ProjectModification
File.WriteAllText(projectPath, updatedContent);
}
- private async Task UpdateVoloPackagesAsync(string content, bool includePreviews = false, bool switchToStable = false)
+ private async Task UpdateVoloPackagesAsync(string content, bool includePreviews = false, bool switchToStable = false, SemanticVersion latestNugetVersion = null, string latestMyGetVersion = null)
{
string packageId = null;
@@ -81,7 +110,7 @@ namespace Volo.Abp.Cli.ProjectModification
if (includePreviews || (currentVersion.Contains("-preview") && !switchToStable))
{
- var latestVersion = await GetLatestVersionFromMyGet(packageId);
+ var latestVersion = latestMyGetVersion ?? await GetLatestVersionFromMyGet(packageId);
if (currentVersion != latestVersion)
{
@@ -95,7 +124,7 @@ namespace Volo.Abp.Cli.ProjectModification
}
else
{
- var latestVersion = await _nuGetService.GetLatestVersionOrNullAsync(packageId);
+ var latestVersion = latestNugetVersion ?? await _nuGetService.GetLatestVersionOrNullAsync(packageId);
if (latestVersion != null && (currentVersion.Contains("-preview") || currentSemanticVersion < latestVersion))
{
@@ -109,7 +138,7 @@ namespace Volo.Abp.Cli.ProjectModification
}
}
- return await Task.FromResult(doc.OuterXml);
+ return doc.OuterXml;
}
}
catch (Exception ex)
diff --git a/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj b/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj
index aec34db41a..424e09b115 100644
--- a/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj
+++ b/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj
@@ -18,8 +18,8 @@
-
-
+
+
diff --git a/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj b/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj
index 50fb328387..000433c83d 100644
--- a/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj
+++ b/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj
@@ -15,20 +15,20 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
-
+
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/TypeHelper.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/TypeHelper.cs
index 83182fc965..83c2c4c38e 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/TypeHelper.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/TypeHelper.cs
@@ -359,5 +359,15 @@ namespace Volo.Abp.Reflection
? type.GenericTypeArguments[0]
: type;
}
+
+ public static bool IsDefaultValue([CanBeNull] object obj)
+ {
+ if (obj == null)
+ {
+ return true;
+ }
+
+ return obj.Equals(GetDefaultValue(obj.GetType()));
+ }
}
}
diff --git a/framework/src/Volo.Abp.Dapper/Volo.Abp.Dapper.csproj b/framework/src/Volo.Abp.Dapper/Volo.Abp.Dapper.csproj
index 27a92976e5..4feb946600 100644
--- a/framework/src/Volo.Abp.Dapper/Volo.Abp.Dapper.csproj
+++ b/framework/src/Volo.Abp.Dapper/Volo.Abp.Dapper.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Entity.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Entity.cs
index b78a5aa400..cf1b643305 100644
--- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Entity.cs
+++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Entity.cs
@@ -1,7 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Reflection;
-using Volo.Abp.MultiTenancy;
namespace Volo.Abp.Domain.Entities
{
@@ -16,6 +14,11 @@ namespace Volo.Abp.Domain.Entities
}
public abstract object[] GetKeys();
+
+ public bool EntityEquals(IEntity other)
+ {
+ return EntityHelper.EntityEquals(this, other);
+ }
}
///
@@ -35,44 +38,6 @@ namespace Volo.Abp.Domain.Entities
Id = id;
}
- public bool EntityEquals(object obj)
- {
- if (obj == null || !(obj is Entity))
- {
- return false;
- }
-
- //Same instances must be considered as equal
- if (ReferenceEquals(this, obj))
- {
- return true;
- }
-
- //Transient objects are not considered as equal
- var other = (Entity)obj;
- if (EntityHelper.HasDefaultId(this) && EntityHelper.HasDefaultId(other))
- {
- return false;
- }
-
- //Must have a IS-A relation of types or must be same type
- var typeOfThis = GetType().GetTypeInfo();
- var typeOfOther = other.GetType().GetTypeInfo();
- if (!typeOfThis.IsAssignableFrom(typeOfOther) && !typeOfOther.IsAssignableFrom(typeOfThis))
- {
- return false;
- }
-
- //Different tenants may have an entity with same Id.
- if (this is IMultiTenant && other is IMultiTenant &&
- this.As().TenantId != other.As().TenantId)
- {
- return false;
- }
-
- return Id.Equals(other.Id);
- }
-
public override object[] GetKeys()
{
return new object[] {Id};
diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/EntityHelper.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/EntityHelper.cs
index ad082c3fb0..65f2992257 100644
--- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/EntityHelper.cs
+++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/EntityHelper.cs
@@ -5,6 +5,8 @@ using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using JetBrains.Annotations;
+using Volo.Abp.MultiTenancy;
+using Volo.Abp.Reflection;
namespace Volo.Abp.Domain.Entities
{
@@ -16,6 +18,98 @@ namespace Volo.Abp.Domain.Entities
private static readonly ConcurrentDictionary CachedIdProperties =
new ConcurrentDictionary();
+ public static bool EntityEquals(IEntity entity1, IEntity entity2)
+ {
+ if (entity1 == null || entity2 == null)
+ {
+ return false;
+ }
+
+ //Same instances must be considered as equal
+ if (ReferenceEquals(entity1, entity2))
+ {
+ return true;
+ }
+
+ //Must have a IS-A relation of types or must be same type
+ var typeOfEntity1 = entity1.GetType();
+ var typeOfEntity2 = entity2.GetType();
+ if (!typeOfEntity1.IsAssignableFrom(typeOfEntity2) && !typeOfEntity2.IsAssignableFrom(typeOfEntity1))
+ {
+ return false;
+ }
+
+ //Different tenants may have an entity with same Id.
+ if (entity1 is IMultiTenant && entity2 is IMultiTenant)
+ {
+ var tenant1Id = ((IMultiTenant) entity1).TenantId;
+ var tenant2Id = ((IMultiTenant) entity2).TenantId;
+
+ if (tenant1Id != tenant2Id)
+ {
+ if (tenant1Id == null || tenant2Id == null)
+ {
+ return false;
+ }
+
+ if (!tenant1Id.Equals(tenant2Id))
+ {
+ return false;
+ }
+ }
+ }
+
+ //Transient objects are not considered as equal
+ if (HasDefaultKeys(entity1) && HasDefaultKeys(entity2))
+ {
+ return false;
+ }
+
+ var entity1Keys = entity1.GetKeys();
+ var entity2Keys = entity2.GetKeys();
+
+ if (entity1Keys.Length != entity2Keys.Length)
+ {
+ return false;
+ }
+
+ for (var i = 0; i < entity1Keys.Length; i++)
+ {
+ var entity1Key = entity1Keys[i];
+ var entity2Key = entity2Keys[i];
+
+ if (entity1Key == null)
+ {
+ if (entity2Key == null)
+ {
+ //Both null, so considered as equals
+ continue;
+ }
+
+ //entity2Key is not null!
+ return false;
+ }
+
+ if (entity2Key == null)
+ {
+ //entity1Key was not null!
+ return false;
+ }
+
+ if (TypeHelper.IsDefaultValue(entity1Key) && TypeHelper.IsDefaultValue(entity2Key))
+ {
+ return false;
+ }
+
+ if (!entity1Key.Equals(entity2Key))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
public static bool IsEntity([NotNull] Type type)
{
return typeof(IEntity).IsAssignableFrom(type);
@@ -25,7 +119,8 @@ namespace Volo.Abp.Domain.Entities
{
foreach (var interfaceType in type.GetInterfaces())
{
- if (interfaceType.GetTypeInfo().IsGenericType && interfaceType.GetGenericTypeDefinition() == typeof(IEntity<>))
+ if (interfaceType.GetTypeInfo().IsGenericType &&
+ interfaceType.GetGenericTypeDefinition() == typeof(IEntity<>))
{
return true;
}
@@ -55,6 +150,44 @@ namespace Volo.Abp.Domain.Entities
return false;
}
+ private static bool IsDefaultKeyValue(object value)
+ {
+ if (value == null)
+ {
+ return true;
+ }
+
+ var type = value.GetType();
+
+ //Workaround for EF Core since it sets int/long to min value when attaching to DbContext
+ if (type == typeof(int))
+ {
+ return Convert.ToInt32(value) <= 0;
+ }
+
+ if (type == typeof(long))
+ {
+ return Convert.ToInt64(value) <= 0;
+ }
+
+ return TypeHelper.IsDefaultValue(value);
+ }
+
+ public static bool HasDefaultKeys([NotNull] IEntity entity)
+ {
+ Check.NotNull(entity, nameof(entity));
+
+ foreach (var key in entity.GetKeys())
+ {
+ if (!IsDefaultKeyValue(key))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
///
/// Tries to find the primary key type of the given entity type.
/// May return null if given type does not implement
@@ -75,12 +208,14 @@ namespace Volo.Abp.Domain.Entities
{
if (!typeof(IEntity).IsAssignableFrom(entityType))
{
- throw new AbpException($"Given {nameof(entityType)} is not an entity. It should implement {typeof(IEntity).AssemblyQualifiedName}!");
+ throw new AbpException(
+ $"Given {nameof(entityType)} is not an entity. It should implement {typeof(IEntity).AssemblyQualifiedName}!");
}
foreach (var interfaceType in entityType.GetTypeInfo().GetInterfaces())
{
- if (interfaceType.GetTypeInfo().IsGenericType && interfaceType.GetGenericTypeDefinition() == typeof(IEntity<>))
+ if (interfaceType.GetTypeInfo().IsGenericType &&
+ interfaceType.GetGenericTypeDefinition() == typeof(IEntity<>))
{
return interfaceType.GenericTypeArguments[0];
}
@@ -132,4 +267,4 @@ namespace Volo.Abp.Domain.Entities
property?.SetValue(entity, idFactory());
}
}
-}
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorList.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorList.cs
index f705f892d5..328c74e324 100644
--- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorList.cs
+++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorList.cs
@@ -4,9 +4,6 @@ namespace Volo.Abp.Domain.Entities.Events.Distributed
{
public class AutoEntityDistributedEventSelectorList : List, IAutoEntityDistributedEventSelectorList
{
- public bool RemoveByName(string name)
- {
- return RemoveAll(s => s.Name == name) > 0;
- }
+
}
}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorListExtensions.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorListExtensions.cs
index e078dfaf43..d2a0622f54 100644
--- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorListExtensions.cs
+++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorListExtensions.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using System.Linq;
using JetBrains.Annotations;
@@ -69,6 +70,44 @@ namespace Volo.Abp.Domain.Entities.Events.Distributed
);
}
+ public static void Add(
+ [NotNull] this IAutoEntityDistributedEventSelectorList selectors,
+ string selectorName,
+ Func predicate)
+ {
+ Check.NotNull(selectors, nameof(selectors));
+
+ if (selectors.Any(s => s.Name == selectorName))
+ {
+ throw new AbpException($"There is already a selector added before with the same name: {selectorName}");
+ }
+
+ selectors.Add(
+ new NamedTypeSelector(
+ selectorName,
+ predicate
+ )
+ );
+ }
+
+ public static void Add(
+ [NotNull] this IAutoEntityDistributedEventSelectorList selectors,
+ Func predicate)
+ {
+ selectors.Add(Guid.NewGuid().ToString("N"), predicate);
+ }
+
+ public static bool RemoveByName(
+ [NotNull] this IAutoEntityDistributedEventSelectorList selectors,
+ [NotNull] string name)
+ {
+ Check.NotNull(selectors, nameof(selectors));
+ Check.NotNull(name, nameof(name));
+
+ return selectors.RemoveAll(s => s.Name == name).Count > 0;
+ }
+
+
public static bool IsMatch([NotNull] this IAutoEntityDistributedEventSelectorList selectors, Type entityType)
{
Check.NotNull(selectors, nameof(selectors));
diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IAutoEntityDistributedEventSelectorList.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IAutoEntityDistributedEventSelectorList.cs
index 589942e60e..fc130eb55c 100644
--- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IAutoEntityDistributedEventSelectorList.cs
+++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IAutoEntityDistributedEventSelectorList.cs
@@ -1,9 +1,9 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
namespace Volo.Abp.Domain.Entities.Events.Distributed
{
public interface IAutoEntityDistributedEventSelectorList : IList
{
- bool RemoveByName(string name);
}
}
\ No newline at end of file
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 cad12b1450..5de3b22c77 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
@@ -1,6 +1,9 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using Volo.Abp.Auditing;
using Volo.Abp.DependencyInjection;
@@ -18,6 +21,7 @@ namespace Volo.Abp.Domain.Entities.Events
///
public class EntityChangeEventHelper : IEntityChangeEventHelper, ITransientDependency
{
+ public ILogger Logger { get; set; }
public ILocalEventBus LocalEventBus { get; set; }
public IDistributedEventBus DistributedEventBus { get; set; }
@@ -36,6 +40,7 @@ namespace Volo.Abp.Domain.Entities.Events
LocalEventBus = NullLocalEventBus.Instance;
DistributedEventBus = NullDistributedEventBus.Instance;
+ Logger = NullLogger.Instance;
}
public async Task TriggerEventsAsync(EntityChangeReport changeReport)
@@ -56,6 +61,7 @@ namespace Volo.Abp.Domain.Entities.Events
LocalEventBus,
typeof(EntityCreatingEventData<>),
entity,
+ entity,
true
);
}
@@ -66,6 +72,7 @@ namespace Volo.Abp.Domain.Entities.Events
LocalEventBus,
typeof(EntityCreatedEventData<>),
entity,
+ entity,
false
);
@@ -78,6 +85,7 @@ namespace Volo.Abp.Domain.Entities.Events
DistributedEventBus,
typeof(EntityCreatedEto<>),
eto,
+ entity,
false
);
}
@@ -101,6 +109,7 @@ namespace Volo.Abp.Domain.Entities.Events
LocalEventBus,
typeof(EntityUpdatingEventData<>),
entity,
+ entity,
true
);
}
@@ -111,6 +120,7 @@ namespace Volo.Abp.Domain.Entities.Events
LocalEventBus,
typeof(EntityUpdatedEventData<>),
entity,
+ entity,
false
);
@@ -123,6 +133,7 @@ namespace Volo.Abp.Domain.Entities.Events
DistributedEventBus,
typeof(EntityUpdatedEto<>),
eto,
+ entity,
false
);
}
@@ -135,6 +146,7 @@ namespace Volo.Abp.Domain.Entities.Events
LocalEventBus,
typeof(EntityDeletingEventData<>),
entity,
+ entity,
true
);
}
@@ -145,6 +157,7 @@ namespace Volo.Abp.Domain.Entities.Events
LocalEventBus,
typeof(EntityDeletedEventData<>),
entity,
+ entity,
false
);
@@ -157,6 +170,7 @@ namespace Volo.Abp.Domain.Entities.Events
DistributedEventBus,
typeof(EntityDeletedEto<>),
eto,
+ entity,
false
);
}
@@ -206,22 +220,129 @@ namespace Volo.Abp.Domain.Entities.Events
{
foreach (var distributedEvent in distributedEvents)
{
- await DistributedEventBus.PublishAsync(distributedEvent.EventData.GetType(), distributedEvent.EventData);
+ await DistributedEventBus.PublishAsync(distributedEvent.EventData.GetType(),
+ distributedEvent.EventData);
}
}
- protected virtual async Task TriggerEventWithEntity(IEventBus eventPublisher, Type genericEventType, object entity, bool triggerInCurrentUnitOfWork)
+ protected virtual async Task TriggerEventWithEntity(
+ IEventBus eventPublisher,
+ Type genericEventType,
+ object entityOrEto,
+ object originalEntity,
+ bool triggerInCurrentUnitOfWork)
{
- var entityType = ProxyHelper.UnProxy(entity).GetType();
+ var entityType = ProxyHelper.UnProxy(entityOrEto).GetType();
var eventType = genericEventType.MakeGenericType(entityType);
+ var currentUow = UnitOfWorkManager.Current;
- if (triggerInCurrentUnitOfWork || UnitOfWorkManager.Current == null)
+ if (triggerInCurrentUnitOfWork || currentUow == null)
{
- await eventPublisher.PublishAsync(eventType, Activator.CreateInstance(eventType, entity));
+ await eventPublisher.PublishAsync(
+ eventType,
+ Activator.CreateInstance(eventType, entityOrEto)
+ );
+
return;
}
- UnitOfWorkManager.Current.OnCompleted(() => eventPublisher.PublishAsync(eventType, Activator.CreateInstance(eventType, entity)));
+ var eventList = GetEventList(currentUow);
+ var isFirstEvent = !eventList.Any();
+
+ eventList.AddUniqueEvent(eventPublisher, eventType, entityOrEto, originalEntity);
+
+ /* Register to OnCompleted if this is the first item.
+ * Other items will already be in the list once the UOW completes.
+ */
+ if (isFirstEvent)
+ {
+ currentUow.OnCompleted(
+ async () =>
+ {
+ foreach (var eventEntry in eventList)
+ {
+ try
+ {
+ await eventPublisher.PublishAsync(
+ eventEntry.EventType,
+ Activator.CreateInstance(eventEntry.EventType, eventEntry.EntityOrEto)
+ );
+ }
+ catch (Exception ex)
+ {
+ Logger.LogError(
+ $"Caught an exception while publishing the event '{eventType.FullName}' for the entity '{entityOrEto}'");
+ Logger.LogException(ex);
+ }
+ }
+ }
+ );
+ }
+ }
+
+ private EntityChangeEventList GetEventList(IUnitOfWork currentUow)
+ {
+ return (EntityChangeEventList) currentUow.Items.GetOrAdd(
+ "AbpEntityChangeEventList",
+ () => new EntityChangeEventList()
+ );
+ }
+
+ private class EntityChangeEventList : List
+ {
+ public void AddUniqueEvent(IEventBus eventBus, Type eventType, object entityOrEto, object originalEntity)
+ {
+ var newEntry = new EntityChangeEventEntry(eventBus, eventType, entityOrEto, originalEntity);
+
+ //Latest "same" event overrides the previous events.
+ for (var i = 0; i < Count; i++)
+ {
+ if (this[i].IsSameEvent(newEntry))
+ {
+ this[i] = newEntry;
+ return;
+ }
+ }
+
+ //If this is a "new" event, add to the end
+ Add(newEntry);
+ }
+ }
+
+ private class EntityChangeEventEntry
+ {
+ public IEventBus EventBus { get; }
+
+ public Type EventType { get; }
+
+ public object EntityOrEto { get; }
+
+ public object OriginalEntity { get; }
+
+ public EntityChangeEventEntry(IEventBus eventBus, Type eventType, object entityOrEto, object originalEntity)
+ {
+ EventType = eventType;
+ EntityOrEto = entityOrEto;
+ OriginalEntity = originalEntity;
+ EventBus = eventBus;
+ }
+
+ public bool IsSameEvent(EntityChangeEventEntry otherEntry)
+ {
+ if (EventBus != otherEntry.EventBus || EventType != otherEntry.EventType)
+ {
+ return false;
+ }
+
+ var originalEntityRef = OriginalEntity as IEntity;
+ var otherOriginalEntityRef = otherEntry.OriginalEntity as IEntity;
+ if (originalEntityRef == null || otherOriginalEntityRef == null)
+ {
+ return false;
+ }
+
+ return EntityHelper.EntityEquals(originalEntityRef, otherOriginalEntityRef);
+ }
}
}
}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj
index c4763c96ca..8043a1ff8e 100644
--- a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj
+++ b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo.Abp.EntityFrameworkCore.PostgreSql.csproj b/framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo.Abp.EntityFrameworkCore.PostgreSql.csproj
index ced9c624ad..96de9fdd1c 100644
--- a/framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo.Abp.EntityFrameworkCore.PostgreSql.csproj
+++ b/framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo.Abp.EntityFrameworkCore.PostgreSql.csproj
@@ -19,7 +19,7 @@
-
+
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 309e53274f..988c3688ee 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
@@ -19,7 +19,7 @@
-
+
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
index 9f4f26c45b..ce5c9a1716 100644
--- a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj
+++ b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj b/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj
index 3ce20b3f4e..da97fb5977 100644
--- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj
+++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj
@@ -20,8 +20,8 @@
-
-
+
+
diff --git a/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj b/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj
index 52cee1ade7..68ce50ec9d 100644
--- a/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj
+++ b/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/framework/src/Volo.Abp.Http.Client/Volo.Abp.Http.Client.csproj b/framework/src/Volo.Abp.Http.Client/Volo.Abp.Http.Client.csproj
index 8607f32a35..4441e0bc17 100644
--- a/framework/src/Volo.Abp.Http.Client/Volo.Abp.Http.Client.csproj
+++ b/framework/src/Volo.Abp.Http.Client/Volo.Abp.Http.Client.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/framework/src/Volo.Abp.IdentityModel/Volo.Abp.IdentityModel.csproj b/framework/src/Volo.Abp.IdentityModel/Volo.Abp.IdentityModel.csproj
index 6c19f18397..0143db8265 100644
--- a/framework/src/Volo.Abp.IdentityModel/Volo.Abp.IdentityModel.csproj
+++ b/framework/src/Volo.Abp.IdentityModel/Volo.Abp.IdentityModel.csproj
@@ -15,8 +15,8 @@
-
-
+
+
diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/tr.json b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/tr.json
new file mode 100644
index 0000000000..4eb4a1209b
--- /dev/null
+++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/tr.json
@@ -0,0 +1,7 @@
+{
+ "culture": "tr",
+ "texts": {
+ "DisplayName:Abp.Localization.DefaultLanguage": "Varsayılan dil",
+ "Description:Abp.Localization.DefaultLanguage": "Varsayılan uygulama dili."
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.MailKit/Volo.Abp.MailKit.csproj b/framework/src/Volo.Abp.MailKit/Volo.Abp.MailKit.csproj
index 3f75ccba80..ddded71dce 100644
--- a/framework/src/Volo.Abp.MailKit/Volo.Abp.MailKit.csproj
+++ b/framework/src/Volo.Abp.MailKit/Volo.Abp.MailKit.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj b/framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj
index ee2ecc23e6..1b2f266637 100644
--- a/framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj
+++ b/framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj b/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj
index 7e14eb9a9e..2b9e46f43d 100644
--- a/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj
+++ b/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/framework/src/Volo.Abp.TextTemplating/Volo.Abp.TextTemplating.csproj b/framework/src/Volo.Abp.TextTemplating/Volo.Abp.TextTemplating.csproj
index 7bcc0400b5..41bba98866 100644
--- a/framework/src/Volo.Abp.TextTemplating/Volo.Abp.TextTemplating.csproj
+++ b/framework/src/Volo.Abp.TextTemplating/Volo.Abp.TextTemplating.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json
index ae50048d03..496e6e3e9d 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json
@@ -13,18 +13,22 @@
"DefaultErrorMessage404": "未找到資源!",
"DefaultErrorMessage404Detail": "未在服務中找到請求的資源!",
"EntityNotFoundErrorMessage": "實體 {0} 不存在,id = {1}!",
+ "Languages": "語系",
"Error": "錯誤",
"AreYouSure": "你確定嗎?",
"Cancel": "取消",
"Yes": "是",
"No": "否",
+ "Ok": "好",
"Close": "關閉",
"Save": "保存",
"SavingWithThreeDot": "保存中...",
"Actions": "操作",
"Delete": "刪除",
"Edit": "修改",
- "Refresh": "刷新",
+ "Refresh": "更新",
+ "Language": "語言",
+ "LoadMore": "讀更多",
"ProcessingWithThreeDot": "處理中...",
"LoadingWithThreeDot": "載入中...",
"Welcome": "歡迎",
@@ -43,11 +47,13 @@
"PagerInfoEmpty": "顯示0個紀錄中的0到0",
"PagerInfoFiltered": "(從 _MAX_ 所有紀錄中過濾掉)",
"NoDataAvailableInDatatable": "資料表中沒有資料",
+ "Total": "總共",
+ "Selected": "已選擇",
"PagerShowMenuEntries": "顯示 _MENU_ 實體",
"DatatableActionDropdownDefaultText": "操作",
"ChangePassword": "修改密碼",
"PersonalInfo": "個人資料",
- "AreYouSureYouWantToCancelEditingWarningMessage": "你有未保存的更改.",
+ "AreYouSureYouWantToCancelEditingWarningMessage": "你有未保存的更改",
"UnhandledException": "未處理的異常!",
"401Message": "未授權",
"403Message": "禁止訪問",
@@ -55,6 +61,6 @@
"500Message": "內部伺服器錯誤",
"GoHomePage": "返回首頁",
"GoBack": "返回",
- "Search": "搜索"
+ "Search": "查詢"
}
-}
\ No newline at end of file
+}
diff --git a/framework/src/Volo.Abp.VirtualFileSystem/Volo.Abp.VirtualFileSystem.csproj b/framework/src/Volo.Abp.VirtualFileSystem/Volo.Abp.VirtualFileSystem.csproj
index 46995e4eb4..f3a0fefb2a 100644
--- a/framework/src/Volo.Abp.VirtualFileSystem/Volo.Abp.VirtualFileSystem.csproj
+++ b/framework/src/Volo.Abp.VirtualFileSystem/Volo.Abp.VirtualFileSystem.csproj
@@ -15,8 +15,8 @@
-
-
+
+
diff --git a/framework/test/AbpTestBase/AbpTestBase.csproj b/framework/test/AbpTestBase/AbpTestBase.csproj
index e1a625580d..a1b2dcd89b 100644
--- a/framework/test/AbpTestBase/AbpTestBase.csproj
+++ b/framework/test/AbpTestBase/AbpTestBase.csproj
@@ -14,12 +14,12 @@
-
-
+
+
-
+
diff --git a/framework/test/SimpleConsoleDemo/SimpleConsoleDemo.csproj b/framework/test/SimpleConsoleDemo/SimpleConsoleDemo.csproj
index 6cd2465068..49c80c56db 100644
--- a/framework/test/SimpleConsoleDemo/SimpleConsoleDemo.csproj
+++ b/framework/test/SimpleConsoleDemo/SimpleConsoleDemo.csproj
@@ -18,7 +18,7 @@
-
+
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 e1253f04c3..0d170148d4 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
@@ -17,7 +17,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 a24f7796c9..9e7bf68457 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
@@ -12,7 +12,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 bb841bc085..b3842f7271 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
@@ -20,7 +20,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 53e92dc13a..f1fa33a3b3 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
@@ -19,7 +19,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 f0301e04fe..ccbffb47f4 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
@@ -8,7 +8,7 @@
-
+
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 fb8b7abd07..92e5e21867 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
@@ -15,7 +15,7 @@
-
+
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.csproj b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.csproj
index 7a95c77246..4c328a670f 100644
--- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.csproj
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.csproj
@@ -15,7 +15,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 1d3fbf892f..e519e733de 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
@@ -15,7 +15,7 @@
-
+
diff --git a/framework/test/Volo.Abp.AspNetCore.Serilog.Tests/Volo.Abp.AspNetCore.Serilog.Tests.csproj b/framework/test/Volo.Abp.AspNetCore.Serilog.Tests/Volo.Abp.AspNetCore.Serilog.Tests.csproj
index 02cf2264a4..77c291f0a0 100644
--- a/framework/test/Volo.Abp.AspNetCore.Serilog.Tests/Volo.Abp.AspNetCore.Serilog.Tests.csproj
+++ b/framework/test/Volo.Abp.AspNetCore.Serilog.Tests/Volo.Abp.AspNetCore.Serilog.Tests.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/framework/test/Volo.Abp.AspNetCore.SignalR.Tests/Volo.Abp.AspNetCore.SignalR.Tests.csproj b/framework/test/Volo.Abp.AspNetCore.SignalR.Tests/Volo.Abp.AspNetCore.SignalR.Tests.csproj
index 8e1ab29329..3bf5a6badd 100644
--- a/framework/test/Volo.Abp.AspNetCore.SignalR.Tests/Volo.Abp.AspNetCore.SignalR.Tests.csproj
+++ b/framework/test/Volo.Abp.AspNetCore.SignalR.Tests/Volo.Abp.AspNetCore.SignalR.Tests.csproj
@@ -8,7 +8,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 8dc3153efb..5becdbc672 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
@@ -25,7 +25,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 3c11330181..2b74dd0a58 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
@@ -11,7 +11,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 3249de2c50..1d3e4b5dfd 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
@@ -14,7 +14,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 6178700db1..1d3d553047 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
@@ -12,7 +12,7 @@
-
+
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 7854d82b82..c8d0672d13 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
@@ -14,7 +14,7 @@
-
+
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 c8763de75d..ca7f94918d 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
@@ -13,7 +13,7 @@
-
+
diff --git a/framework/test/Volo.Abp.BlobStoring.Azure.Tests/Volo.Abp.BlobStoring.Azure.Tests.csproj b/framework/test/Volo.Abp.BlobStoring.Azure.Tests/Volo.Abp.BlobStoring.Azure.Tests.csproj
index ff97ea97d3..09a4861297 100644
--- a/framework/test/Volo.Abp.BlobStoring.Azure.Tests/Volo.Abp.BlobStoring.Azure.Tests.csproj
+++ b/framework/test/Volo.Abp.BlobStoring.Azure.Tests/Volo.Abp.BlobStoring.Azure.Tests.csproj
@@ -12,7 +12,7 @@
-
+
diff --git a/framework/test/Volo.Abp.BlobStoring.FileSystem.Tests/Volo.Abp.BlobStoring.FileSystem.Tests.csproj b/framework/test/Volo.Abp.BlobStoring.FileSystem.Tests/Volo.Abp.BlobStoring.FileSystem.Tests.csproj
index b2741af89a..93165fa05a 100644
--- a/framework/test/Volo.Abp.BlobStoring.FileSystem.Tests/Volo.Abp.BlobStoring.FileSystem.Tests.csproj
+++ b/framework/test/Volo.Abp.BlobStoring.FileSystem.Tests/Volo.Abp.BlobStoring.FileSystem.Tests.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/framework/test/Volo.Abp.BlobStoring.Tests/Volo.Abp.BlobStoring.Tests.csproj b/framework/test/Volo.Abp.BlobStoring.Tests/Volo.Abp.BlobStoring.Tests.csproj
index d9535ff176..130f95bb77 100644
--- a/framework/test/Volo.Abp.BlobStoring.Tests/Volo.Abp.BlobStoring.Tests.csproj
+++ b/framework/test/Volo.Abp.BlobStoring.Tests/Volo.Abp.BlobStoring.Tests.csproj
@@ -11,7 +11,7 @@
-
+
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 698278ee4c..1213685332 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
@@ -12,7 +12,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 23564716da..f16f39a6eb 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
@@ -10,7 +10,7 @@
-
+
diff --git a/framework/test/Volo.Abp.Cli.Core.Tests/Volo.Abp.Cli.Core.Tests.csproj b/framework/test/Volo.Abp.Cli.Core.Tests/Volo.Abp.Cli.Core.Tests.csproj
index 97aaa8a83f..d13f50b93b 100644
--- a/framework/test/Volo.Abp.Cli.Core.Tests/Volo.Abp.Cli.Core.Tests.csproj
+++ b/framework/test/Volo.Abp.Cli.Core.Tests/Volo.Abp.Cli.Core.Tests.csproj
@@ -10,7 +10,7 @@
-
+
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 bd646adf95..6be0cb02ab 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
@@ -10,7 +10,7 @@
-
+
diff --git a/framework/test/Volo.Abp.Dapper.Tests/Volo.Abp.Dapper.Tests.csproj b/framework/test/Volo.Abp.Dapper.Tests/Volo.Abp.Dapper.Tests.csproj
index 1bb64ef52d..4402f1e9a8 100644
--- a/framework/test/Volo.Abp.Dapper.Tests/Volo.Abp.Dapper.Tests.csproj
+++ b/framework/test/Volo.Abp.Dapper.Tests/Volo.Abp.Dapper.Tests.csproj
@@ -13,7 +13,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 35d7ad3950..c35edc1148 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
@@ -10,7 +10,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 cb917cea72..3422dcbcf6 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
@@ -10,7 +10,7 @@
-
+
diff --git a/framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Entities/Entity_Tests.cs b/framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Entities/Entity_Tests.cs
new file mode 100644
index 0000000000..779ac3fe49
--- /dev/null
+++ b/framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Entities/Entity_Tests.cs
@@ -0,0 +1,139 @@
+using System;
+using Shouldly;
+using Volo.Abp.MultiTenancy;
+using Xunit;
+
+namespace Volo.Abp.Domain.Entities
+{
+ public class Entity_Tests
+ {
+ [Fact]
+ public void EntityEquals_Should_Return_True_For_Same_Keys()
+ {
+ var idValue1 = Guid.NewGuid();
+ var idValue2 = Guid.NewGuid();
+
+ new Person(idValue1).EntityEquals(new Person(idValue1)).ShouldBeTrue();
+
+ new Car(42).EntityEquals(new Car(42)).ShouldBeTrue();
+
+ new Product("a").EntityEquals(new Product("a")).ShouldBeTrue();
+
+ new Phone(idValue1, "123").EntityEquals(new Phone(idValue1, "123")).ShouldBeTrue();
+ }
+
+ [Fact]
+ public void EntityEquals_Should_Return_False_For_Different_Keys()
+ {
+ var idValue1 = Guid.NewGuid();
+ var idValue2 = Guid.NewGuid();
+
+ new Person(idValue1).EntityEquals(new Person()).ShouldBeFalse();
+ new Person(idValue1).EntityEquals(new Person(idValue2)).ShouldBeFalse();
+
+ new Car(42).EntityEquals(new Car()).ShouldBeFalse();
+ new Car(42).EntityEquals(new Car(43)).ShouldBeFalse();
+
+ new Product("a").EntityEquals(new Product()).ShouldBeFalse();
+ new Product("a").EntityEquals(new Product("b")).ShouldBeFalse();
+
+ new Phone(idValue1, "123").EntityEquals(new Phone()).ShouldBeFalse();
+ new Phone(idValue1, "123").EntityEquals(new Phone(idValue1, null)).ShouldBeFalse();
+ new Phone(idValue1, "123").EntityEquals(new Phone(idValue1, "321")).ShouldBeFalse();
+ }
+
+ [Fact]
+ public void EntityEquals_Should_Return_False_For_Both_Default_Keys()
+ {
+ new Person().EntityEquals(new Person()).ShouldBeFalse();
+
+ new Car().EntityEquals(new Car()).ShouldBeFalse();
+
+ new Product().EntityEquals(new Product()).ShouldBeFalse();
+
+ new Phone().EntityEquals(new Phone()).ShouldBeFalse();
+ }
+
+ [Fact]
+ public void Different_Tenants_With_Same_Keys_Considered_As_Different_Objects()
+ {
+ var tenantId1 = Guid.NewGuid();
+ var tenantId2 = Guid.NewGuid();
+
+ new Car(42, tenantId1).EntityEquals(new Car(42)).ShouldBeFalse();
+ new Car(42).EntityEquals(new Car(42, tenantId2)).ShouldBeFalse();
+ new Car(42, tenantId1).EntityEquals(new Car(42, tenantId2)).ShouldBeFalse();
+ }
+
+ [Fact]
+ public void Same_Tenants_With_Same_Keys_Considered_As_Same_Objects()
+ {
+ var tenantId1 = Guid.NewGuid();
+
+ new Car(42).EntityEquals(new Car(42)).ShouldBeTrue();
+ new Car(42, tenantId1).EntityEquals(new Car(42, tenantId1)).ShouldBeTrue();
+ }
+
+ public class Person : Entity
+ {
+ public Person()
+ {
+ }
+
+ public Person(Guid id)
+ : base(id)
+ {
+ }
+ }
+
+ public class Car : Entity, IMultiTenant
+ {
+ public Guid? TenantId { get; }
+
+ public Car()
+ {
+ }
+
+ public Car(int id, Guid? tenantId = null)
+ : base(id)
+ {
+ TenantId = tenantId;
+ }
+ }
+
+ public class Product : Entity
+ {
+ public Product()
+ {
+ }
+
+ public Product(string id)
+ : base(id)
+ {
+ }
+ }
+
+ public class Phone : Entity
+ {
+ public Guid PersonId { get; set; }
+
+ public string Number { get; set; }
+
+ public Phone()
+ {
+
+ }
+
+ public Phone(Guid personId, string number)
+ {
+ PersonId = personId;
+ Number = number;
+ }
+
+ public override object[] GetKeys()
+ {
+ return new Object[] {PersonId, Number};
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorListExtensions_Tests.cs b/framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorListExtensions_Tests.cs
new file mode 100644
index 0000000000..9949d23f1f
--- /dev/null
+++ b/framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorListExtensions_Tests.cs
@@ -0,0 +1,22 @@
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.Domain.Entities.Events.Distributed
+{
+ public class AutoEntityDistributedEventSelectorListExtensions_Tests
+ {
+ [Fact]
+ public void Add_Entity()
+ {
+ var selectors = new AutoEntityDistributedEventSelectorList();
+ selectors.Add();
+
+ selectors.IsMatch(typeof(MyEntity)).ShouldBeTrue();
+ }
+
+ private class MyEntity : Entity
+ {
+
+ }
+ }
+}
\ No newline at end of file
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 030eddb65a..23dd953416 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
@@ -11,7 +11,7 @@
-
+
diff --git a/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/tr.json b/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/tr.json
new file mode 100644
index 0000000000..6c3c94cfdf
--- /dev/null
+++ b/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/tr.json
@@ -0,0 +1,6 @@
+{
+ "culture": "tr",
+ "texts": {
+ "hello": "Merhaba"
+ }
+}
\ No newline at end of file
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 a154e6acaf..84fcc32477 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
@@ -16,7 +16,7 @@
-
+
diff --git a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/DomainEvents/EntityChangeEvents_Tests.cs b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/DomainEvents/EntityChangeEvents_Tests.cs
index 2b94ee1ed9..9f4b67d089 100644
--- a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/DomainEvents/EntityChangeEvents_Tests.cs
+++ b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/DomainEvents/EntityChangeEvents_Tests.cs
@@ -4,6 +4,6 @@ namespace Volo.Abp.EntityFrameworkCore.DomainEvents
{
public class EntityChangeEvents_Tests : EntityChangeEvents_Tests
{
-
+
}
}
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 adeefbd45b..f45812c4a6 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
@@ -12,7 +12,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 bc375d9406..d5ea171e35 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
@@ -11,7 +11,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 3c91d940e5..2ee95269ae 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
@@ -11,7 +11,7 @@
-
+
diff --git a/framework/test/Volo.Abp.Http.Client.IdentityModel.Web.Tests/Volo.Abp.Http.Client.IdentityModel.Web.Tests.csproj b/framework/test/Volo.Abp.Http.Client.IdentityModel.Web.Tests/Volo.Abp.Http.Client.IdentityModel.Web.Tests.csproj
index 704c3b57aa..78518bdda3 100644
--- a/framework/test/Volo.Abp.Http.Client.IdentityModel.Web.Tests/Volo.Abp.Http.Client.IdentityModel.Web.Tests.csproj
+++ b/framework/test/Volo.Abp.Http.Client.IdentityModel.Web.Tests/Volo.Abp.Http.Client.IdentityModel.Web.Tests.csproj
@@ -10,7 +10,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 193df5db4f..07708ce189 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
@@ -11,7 +11,7 @@
-
+
diff --git a/framework/test/Volo.Abp.Ldap.Tests/Volo.Abp.Ldap.Tests.csproj b/framework/test/Volo.Abp.Ldap.Tests/Volo.Abp.Ldap.Tests.csproj
index c0854a7633..3c1f9c96db 100644
--- a/framework/test/Volo.Abp.Ldap.Tests/Volo.Abp.Ldap.Tests.csproj
+++ b/framework/test/Volo.Abp.Ldap.Tests/Volo.Abp.Ldap.Tests.csproj
@@ -8,7 +8,7 @@
-
+
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 20c92c8cf8..56abd36ebb 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
@@ -14,7 +14,7 @@
-
+
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs
index 961f1ba0a4..71c2fafe2e 100644
--- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs
@@ -1,6 +1,5 @@
using System.Globalization;
using System.Linq;
-using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
using Shouldly;
using Volo.Abp.Localization.TestResources.Base.CountryNames;
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/tr.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/tr.json
index 1f38b5c8d4..a6b6ce2a44 100644
--- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/tr.json
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/tr.json
@@ -1,6 +1,7 @@
-{
+{
"culture": "tr",
"texts": {
- "USA": "Amerika Birleşik Devletleri"
+ "USA": "Amerika Birleşik Devletleri",
+ "Brazil": "Brezilya"
}
}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/tr.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/tr.json
new file mode 100644
index 0000000000..4a1cb24c25
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/tr.json
@@ -0,0 +1,7 @@
+{
+ "culture": "tr",
+ "texts": {
+ "ThisFieldIsRequired": "Bu alan zorunludur",
+ "MaxLenghtErrorMessage": "Bu alan maksimum '{0}' karakter olabilir"
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/tr.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/tr.json
index fa2d23246b..ee1900e150 100644
--- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/tr.json
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/tr.json
@@ -1,9 +1,10 @@
-{
+{
"culture": "tr",
"texts": {
"Hello {0}.": "Merhaba {0}.",
"Car": "Araba",
"CarPlural": "Araba",
+ "MaxLenghtErrorMessage": "Bu alanın uzunluğu maksimum '{0}' karakter olabilir",
"Universe": "Evren"
}
}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/tr.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/tr.json
new file mode 100644
index 0000000000..7023061d35
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/tr.json
@@ -0,0 +1,6 @@
+{
+ "culture": "tr",
+ "texts": {
+
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.MailKit.Tests/Volo.Abp.MailKit.Tests.csproj b/framework/test/Volo.Abp.MailKit.Tests/Volo.Abp.MailKit.Tests.csproj
index bc5d991884..31c7001db5 100644
--- a/framework/test/Volo.Abp.MailKit.Tests/Volo.Abp.MailKit.Tests.csproj
+++ b/framework/test/Volo.Abp.MailKit.Tests/Volo.Abp.MailKit.Tests.csproj
@@ -11,7 +11,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 9b6adc9442..372ebd68f4 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
@@ -12,7 +12,7 @@
-
+
diff --git a/framework/test/Volo.Abp.Minify.Tests/Volo.Abp.Minify.Tests.csproj b/framework/test/Volo.Abp.Minify.Tests/Volo.Abp.Minify.Tests.csproj
index 69b159dd0f..2c14d9fba4 100644
--- a/framework/test/Volo.Abp.Minify.Tests/Volo.Abp.Minify.Tests.csproj
+++ b/framework/test/Volo.Abp.Minify.Tests/Volo.Abp.Minify.Tests.csproj
@@ -10,7 +10,7 @@
-
+
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 dc35828937..97758b7880 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
@@ -16,7 +16,7 @@
-
+
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 1c9ab1ab4b..3d95f00a8b 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
@@ -10,7 +10,7 @@
-
+
diff --git a/framework/test/Volo.Abp.ObjectExtending.Tests/Volo.Abp.ObjectExtending.Tests.csproj b/framework/test/Volo.Abp.ObjectExtending.Tests/Volo.Abp.ObjectExtending.Tests.csproj
index 0a18e0c44b..212eeb7d5b 100644
--- a/framework/test/Volo.Abp.ObjectExtending.Tests/Volo.Abp.ObjectExtending.Tests.csproj
+++ b/framework/test/Volo.Abp.ObjectExtending.Tests/Volo.Abp.ObjectExtending.Tests.csproj
@@ -10,7 +10,7 @@
-
+
diff --git a/framework/test/Volo.Abp.ObjectMapping.Tests/Volo.Abp.ObjectMapping.Tests.csproj b/framework/test/Volo.Abp.ObjectMapping.Tests/Volo.Abp.ObjectMapping.Tests.csproj
index c4b54f9efd..23c59ef064 100644
--- a/framework/test/Volo.Abp.ObjectMapping.Tests/Volo.Abp.ObjectMapping.Tests.csproj
+++ b/framework/test/Volo.Abp.ObjectMapping.Tests/Volo.Abp.ObjectMapping.Tests.csproj
@@ -10,7 +10,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 6e99e2d1e8..41d152d1cb 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
@@ -10,7 +10,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 36df9d0a60..3efd1d9db7 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
@@ -10,7 +10,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 70d52138a3..fadf2659d0 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
@@ -11,7 +11,7 @@
-
+
diff --git a/framework/test/Volo.Abp.Specifications.Tests/Volo.Abp.Specifications.Tests.csproj b/framework/test/Volo.Abp.Specifications.Tests/Volo.Abp.Specifications.Tests.csproj
index 0ddc58ea96..b44ee82aae 100644
--- a/framework/test/Volo.Abp.Specifications.Tests/Volo.Abp.Specifications.Tests.csproj
+++ b/framework/test/Volo.Abp.Specifications.Tests/Volo.Abp.Specifications.Tests.csproj
@@ -10,7 +10,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 b733889bf0..0ff64ec1d8 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
@@ -9,7 +9,7 @@
-
+
diff --git a/framework/test/Volo.Abp.TestApp/Volo.Abp.TestApp.csproj b/framework/test/Volo.Abp.TestApp/Volo.Abp.TestApp.csproj
index c2d9ab2007..35d5e3b71a 100644
--- a/framework/test/Volo.Abp.TestApp/Volo.Abp.TestApp.csproj
+++ b/framework/test/Volo.Abp.TestApp/Volo.Abp.TestApp.csproj
@@ -14,7 +14,7 @@
-
+
diff --git a/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Testing/EntityChangeEvents_Tests.cs b/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Testing/EntityChangeEvents_Tests.cs
index fe4e0862f3..cb16a46439 100644
--- a/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Testing/EntityChangeEvents_Tests.cs
+++ b/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Testing/EntityChangeEvents_Tests.cs
@@ -84,5 +84,44 @@ namespace Volo.Abp.TestApp.Testing
createdEventTriggered.ShouldBeTrue();
createdEtoTriggered.ShouldBeTrue();
}
+
+ [Fact]
+ public async Task Multiple_Update_Should_Result_With_Single_Updated_Event_In_The_Same_Uow()
+ {
+ var personId = Guid.NewGuid();
+ await PersonRepository.InsertAsync(new Person(personId, Guid.NewGuid().ToString("D"), 42));
+
+ var updateEventCount = 0;
+ var updatedAge = 0;
+
+ DistributedEventBus.Subscribe>(eto =>
+ {
+ updateEventCount++;
+ updatedAge = eto.Entity.Age;
+ return Task.CompletedTask;
+ });
+
+ using (var uow = GetRequiredService().Begin())
+ {
+ var person = await PersonRepository.GetAsync(personId);
+
+ person.Age = 43;
+ await PersonRepository.UpdateAsync(person, autoSave: true);
+ updateEventCount.ShouldBe(0);
+
+ person.Age = 44;
+ await PersonRepository.UpdateAsync(person, autoSave: true);
+ updateEventCount.ShouldBe(0);
+
+ person.Age = 45;
+ await PersonRepository.UpdateAsync(person, autoSave: true);
+ updateEventCount.ShouldBe(0);
+
+ await uow.CompleteAsync();
+ }
+
+ updateEventCount.ShouldBe(1);
+ updatedAge.ShouldBe(45);
+ }
}
}
diff --git a/framework/test/Volo.Abp.TextTemplating.Tests/Volo.Abp.TextTemplating.Tests.csproj b/framework/test/Volo.Abp.TextTemplating.Tests/Volo.Abp.TextTemplating.Tests.csproj
index 0d230552e8..0895567843 100644
--- a/framework/test/Volo.Abp.TextTemplating.Tests/Volo.Abp.TextTemplating.Tests.csproj
+++ b/framework/test/Volo.Abp.TextTemplating.Tests/Volo.Abp.TextTemplating.Tests.csproj
@@ -19,7 +19,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 bf48039303..2ba5372364 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
@@ -10,7 +10,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 32bd3e4af5..c6b401eec1 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
@@ -10,7 +10,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 7bf3df7ca5..13f57717d5 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
@@ -12,7 +12,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 7dcfdc83c5..9f8f904aa4 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
@@ -14,7 +14,7 @@
-
+
diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json
index 44cebc1190..60d5f40634 100644
--- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json
+++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json
@@ -1,4 +1,4 @@
-{
+{
"culture": "tr",
"texts": {
"UserName": "Kullanıcı adı",
@@ -11,10 +11,12 @@
"InvalidUserNameOrPassword": "Kullanıcı adı ya da şifre geçersiz!",
"LoginIsNotAllowed": "Giriş yapamazsınız! E-posta adresinizi ya da telefon numaranızı doğrulamanız gerekiyor.",
"SelfRegistrationDisabledMessage": "Bu uygulama için kullanıcıların kendi kendilerine kaydolmaları engellenmiştir. Yeni bir kullanıcı kaydetmek için lütfen uygulama yöneticisi ile iletişime geçin.",
+ "LocalLoginDisabledMessage": "Bu uygulama için local login devre dışı bırakılmıştır.",
"Login": "Giriş yap",
"Cancel": "İptal",
"Register": "Kayıt ol",
"AreYouANewUser": "Yeni bir kullanıcı mısınız?",
+ "AlreadyRegistered": "Zaten kayıtlı mı?",
"InvalidLoginRequest": "Başarısız giriş isteği",
"ThereAreNoLoginSchemesConfiguredForThisClient": "Bu client için konfigüre edilmiş giriş şeması bulunamadı.",
"LogInUsingYourProviderAccount": "{0} hesabınızla giriş yapın.",
@@ -34,6 +36,10 @@
"PasswordChanged": "Şifre değiştirildi",
"NewPasswordConfirmFailed": "Lütfen yeni şifreyi onaylayın.",
"Manage": "Manage",
- "ManageYourProfile": "Profilinizi yönetin"
+ "ManageYourProfile": "Profilinizi yönetin",
+ "DisplayName:Abp.Account.IsSelfRegistrationEnabled": "self-registration etkin mi ?",
+ "Description:Abp.Account.IsSelfRegistrationEnabled": "Bir kullanıcının hesabı kendisi tarafından kaydedip kaydedememesidir.",
+ "DisplayName:Abp.Account.EnableLocalLogin": "Yerel bir hesapla kimlik doğrulaması",
+ "Description:Abp.Account.EnableLocalLogin": "Sunucunun, kullanıcıların yerel bir hesapla kimlik doğrulamasına izin verip vermeyeceğini belirtir."
}
}
\ No newline at end of file
diff --git a/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj b/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj
index 1ddc2323d1..a11fb89e1a 100644
--- a/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj
+++ b/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/modules/account/src/Volo.Abp.Account.Web/Areas/Account/Controllers/Models/UserLoginInfo.cs b/modules/account/src/Volo.Abp.Account.Web/Areas/Account/Controllers/Models/UserLoginInfo.cs
index fe86445a85..ef3f399477 100644
--- a/modules/account/src/Volo.Abp.Account.Web/Areas/Account/Controllers/Models/UserLoginInfo.cs
+++ b/modules/account/src/Volo.Abp.Account.Web/Areas/Account/Controllers/Models/UserLoginInfo.cs
@@ -17,7 +17,5 @@ namespace Volo.Abp.Account.Web.Areas.Account.Controllers.Models
public string Password { get; set; }
public bool RememberMe { get; set; }
-
- public Guid? TenanId { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj b/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj
index f4c7094d4f..779c2d2d25 100644
--- a/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj
+++ b/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj
@@ -6,13 +6,13 @@
-
-
-
+
+
+
-
+
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 c85e570040..6287d732e2 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
@@ -14,8 +14,8 @@
-
-
+
+
diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo.Abp.AuditLogging.MongoDB.Tests.csproj b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo.Abp.AuditLogging.MongoDB.Tests.csproj
index ffc1906dce..34130bfca5 100644
--- a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo.Abp.AuditLogging.MongoDB.Tests.csproj
+++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo.Abp.AuditLogging.MongoDB.Tests.csproj
@@ -13,7 +13,7 @@
-
+
diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo.Abp.AuditLogging.TestBase.csproj b/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo.Abp.AuditLogging.TestBase.csproj
index ced62e3c1b..e62925a488 100644
--- a/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo.Abp.AuditLogging.TestBase.csproj
+++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo.Abp.AuditLogging.TestBase.csproj
@@ -14,12 +14,12 @@
-
-
+
+
-
+
diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.Tests/Volo.Abp.AuditLogging.Tests.csproj b/modules/audit-logging/test/Volo.Abp.AuditLogging.Tests/Volo.Abp.AuditLogging.Tests.csproj
index ccfb554d58..ab703cdca3 100644
--- a/modules/audit-logging/test/Volo.Abp.AuditLogging.Tests/Volo.Abp.AuditLogging.Tests.csproj
+++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.Tests/Volo.Abp.AuditLogging.Tests.csproj
@@ -12,7 +12,7 @@
-
+
diff --git a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/Volo.Abp.BackgroundJobs.DemoApp.Shared.csproj b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/Volo.Abp.BackgroundJobs.DemoApp.Shared.csproj
index 3c942ccf89..cf5ed0ce08 100644
--- a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/Volo.Abp.BackgroundJobs.DemoApp.Shared.csproj
+++ b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/Volo.Abp.BackgroundJobs.DemoApp.Shared.csproj
@@ -7,7 +7,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 e6f1a834ec..0d8388c610 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,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers
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 1326240199..4c835cbd51 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 e419b3302a..3246aefa4f 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
@@ -14,8 +14,8 @@
-
-
+
+
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 3878875e65..496f95b373 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,7 +13,7 @@
-
+
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 8563f2b04a..46d6ea7b8e 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,12 +14,12 @@
-
-
+
+
-
+
diff --git a/modules/blob-storing-database/host/BlobStoring.Database.Host.ConsoleApp/src/BlobStoring.Database.Host.ConsoleApp.ConsoleApp/BlobStoring.Database.Host.ConsoleApp.ConsoleApp.csproj b/modules/blob-storing-database/host/BlobStoring.Database.Host.ConsoleApp/src/BlobStoring.Database.Host.ConsoleApp.ConsoleApp/BlobStoring.Database.Host.ConsoleApp.ConsoleApp.csproj
index 61af5fc4ce..43455e655a 100644
--- a/modules/blob-storing-database/host/BlobStoring.Database.Host.ConsoleApp/src/BlobStoring.Database.Host.ConsoleApp.ConsoleApp/BlobStoring.Database.Host.ConsoleApp.ConsoleApp.csproj
+++ b/modules/blob-storing-database/host/BlobStoring.Database.Host.ConsoleApp/src/BlobStoring.Database.Host.ConsoleApp.ConsoleApp/BlobStoring.Database.Host.ConsoleApp.ConsoleApp.csproj
@@ -20,13 +20,13 @@
-
+
-
-
+
+
diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.Domain.Tests/Volo.Abp.BlobStoring.Database.Domain.Tests.csproj b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.Domain.Tests/Volo.Abp.BlobStoring.Database.Domain.Tests.csproj
index 20de7c154e..a6ff223c3a 100644
--- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.Domain.Tests/Volo.Abp.BlobStoring.Database.Domain.Tests.csproj
+++ b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.Domain.Tests/Volo.Abp.BlobStoring.Database.Domain.Tests.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj
index 8bdc5080aa..04bdd5071a 100644
--- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj
+++ b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj
@@ -6,10 +6,10 @@
-
-
-
-
+
+
+
+
diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/Volo.Abp.BlobStoring.Database.MongoDB.Tests.csproj b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/Volo.Abp.BlobStoring.Database.MongoDB.Tests.csproj
index 9b37676068..48196ab38f 100644
--- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/Volo.Abp.BlobStoring.Database.MongoDB.Tests.csproj
+++ b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/Volo.Abp.BlobStoring.Database.MongoDB.Tests.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.TestBase/Volo.Abp.BlobStoring.Database.TestBase.csproj b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.TestBase/Volo.Abp.BlobStoring.Database.TestBase.csproj
index 8dfa603e98..196cdce7bb 100644
--- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.TestBase/Volo.Abp.BlobStoring.Database.TestBase.csproj
+++ b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.TestBase/Volo.Abp.BlobStoring.Database.TestBase.csproj
@@ -6,12 +6,12 @@
-
-
+
+
-
+
diff --git a/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj b/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj
index 6e269e702a..c264c00f41 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj
+++ b/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/modules/blogging/src/Volo.Blogging.Admin.Web/Volo.Blogging.Admin.Web.csproj b/modules/blogging/src/Volo.Blogging.Admin.Web/Volo.Blogging.Admin.Web.csproj
index d15cf9c770..9037420f3f 100644
--- a/modules/blogging/src/Volo.Blogging.Admin.Web/Volo.Blogging.Admin.Web.csproj
+++ b/modules/blogging/src/Volo.Blogging.Admin.Web/Volo.Blogging.Admin.Web.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json
index b4b6cba0be..78e18601ff 100644
--- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json
+++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json
@@ -1,4 +1,4 @@
-{
+{
"culture": "tr",
"texts": {
"Menu:Blogs": "Bloglar",
@@ -20,7 +20,6 @@
"SeeAll": "Hepsini Gör",
"PopularTags": "Popüler Etiketler",
"WiewsWithCount": "{0} görüntüleme",
- "ShareOnTwitter": "Twitter'da paylaş",
"LastPosts": "Son Yazılar",
"LeaveComment": "Yorum Bırak",
"TagsInThisArticle": "Makalenin Etiketleri",
@@ -33,6 +32,7 @@
"AreYouSure": "Emin misiniz?",
"CommentWithCount": "{0} yorum",
"Comment": "Yorum",
+ "ShareOnTwitter": "Twitter'da paylaş",
"CoverImage": "Kapak resmi",
"CreateANewPost": "Yeni Yazı oluştur",
"CreateANewBlog": "Yeni Blog Ekle",
@@ -43,6 +43,7 @@
"Description": "Açıklama",
"Blogs": "Bloglar",
"Tags": "Etiketler",
- "ShareOn": "Paylaş"
+ "ShareOn": "Paylaş",
+ "TitleLengthWarning": "Başlığınınz SEO dostu olabilmesi için 60 karakterden az olmasını sağlayın!"
}
}
\ No newline at end of file
diff --git a/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj b/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj
index 3760fa0539..e26b58d550 100644
--- a/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj
+++ b/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/modules/blogging/test/Volo.Blogging.Application.Tests/Volo.Blogging.Application.Tests.csproj b/modules/blogging/test/Volo.Blogging.Application.Tests/Volo.Blogging.Application.Tests.csproj
index 2bc4009d26..6776e49a9c 100644
--- a/modules/blogging/test/Volo.Blogging.Application.Tests/Volo.Blogging.Application.Tests.csproj
+++ b/modules/blogging/test/Volo.Blogging.Application.Tests/Volo.Blogging.Application.Tests.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo.Blogging.Domain.Tests.csproj b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo.Blogging.Domain.Tests.csproj
index 4c77689067..776aaf3657 100644
--- a/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo.Blogging.Domain.Tests.csproj
+++ b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo.Blogging.Domain.Tests.csproj
@@ -2,11 +2,11 @@
netcoreapp3.1
-
+
-
+
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 1061e14347..01d894de88 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
@@ -12,7 +12,7 @@
-
+
diff --git a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo.Blogging.MongoDB.Tests.csproj b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo.Blogging.MongoDB.Tests.csproj
index d58c4ce66f..8eaa145ee7 100644
--- a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo.Blogging.MongoDB.Tests.csproj
+++ b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo.Blogging.MongoDB.Tests.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/modules/blogging/test/Volo.Blogging.TestBase/Volo.Blogging.TestBase.csproj b/modules/blogging/test/Volo.Blogging.TestBase/Volo.Blogging.TestBase.csproj
index 39cc02fafa..eae856530d 100644
--- a/modules/blogging/test/Volo.Blogging.TestBase/Volo.Blogging.TestBase.csproj
+++ b/modules/blogging/test/Volo.Blogging.TestBase/Volo.Blogging.TestBase.csproj
@@ -12,12 +12,12 @@
-
-
+
+
-
+
diff --git a/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/tr.json b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/tr.json
index 8f49c6e952..c88e95867d 100644
--- a/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/tr.json
+++ b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/tr.json
@@ -1,6 +1,7 @@
-{
+{
"culture": "tr",
"texts": {
+ "DocsTitle": "VoloDocs",
"WelcomeVoloDocs": "VoloDocs Hoşgeldiniz!",
"NoProjectWarning": "Henüz bir proje yok!",
"CreateYourFirstProject": "İlk projenizi oluşturmak için tıklayın",
diff --git a/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj b/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj
index 9da16c65cf..2e06315603 100644
--- a/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj
+++ b/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/tr.json b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/tr.json
index c40893e538..319a901004 100644
--- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/tr.json
+++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/tr.json
@@ -1,4 +1,4 @@
-{
+{
"culture": "tr",
"texts": {
"Permission:DocumentManagement": "Döküman yönetimi",
@@ -7,6 +7,7 @@
"Permission:Delete": "Sil",
"Permission:Create": "Oluştur",
"Permission:Documents": "Döküman",
+ "Menu:Documents": "Dokümanlar",
"Menu:DocumentManagement": "Dökümanlar",
"Menu:ProjectManagement": "Projeler",
"CreateANewProject": "Yeni proje oluştur",
@@ -29,8 +30,19 @@
"DisplayName:LatestVersionBranchName": "Son versiyon Branch adı",
"DisplayName:GitHubRootUrl": "GitHub kök adresi",
"DisplayName:GitHubAccessToken": "GitHub erişim token",
+ "DisplayName:GitHubUserAgent": "GitHub kullanıcı temsilcisi",
"DisplayName:All": "Çekme bütün",
"DisplayName:LanguageCode": "Dil kodu",
- "DisplayName:Version": "versiyon"
+ "DisplayName:Version": "versiyon",
+ "Documents": "Dokümanlar",
+ "RemoveFromCache": "Önbellekten kaldır",
+ "Reindex": "Yeniden İndeksle",
+ "ReindexCompleted": "Yeniden indeksleme tamamlandı",
+ "RemovedFromCache": "Önbellekten kaldırıldı",
+ "RemoveFromCacheConfirmation": "Bu maddeyi önbellekten kaldırmak istediğiniz emin misiniz?",
+ "ReIndexDocumentConfirmation": "Bu maddeyi yeniden indekslemek istediğinize emin misiniz?",
+ "DeleteDocumentFromDbConfirmation": "Bu maddeyi veritabanından silmek istediğinize emin misiniz?",
+ "DeleteFromDatabase": "Veritabanından sil",
+ "Deleted": "Silindi"
}
}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj b/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj
index 5331433e24..5b93ecdf8a 100644
--- a/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj
+++ b/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj
@@ -16,9 +16,9 @@
-
-
-
+
+
+
diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/tr.json b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/tr.json
index 612274f95d..f41a049932 100644
--- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/tr.json
+++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/tr.json
@@ -1,4 +1,4 @@
-{
+{
"culture": "tr",
"texts": {
"Documents": "Dökümanlar",
@@ -9,17 +9,30 @@
"Edit": "Düzenle",
"LastEditTime": "Son Düzenleme",
"Delete": "Sil",
+ "ClearCache": "Önbelleği temizle",
+ "ClearCacheConfirmationMessage": "\"{0}\" Projesinin tüm önbelliğini temizlemek istediğinize emin misiniz? ",
+ "ReIndexAllProjects": "Tüm projeleri yeniden indexle",
+ "ReIndexProject": "Projeyi yeniden indeksle",
+ "ReIndexProjectConfirmationMessage": "\"{0}\" Projesini yeniden insdekslemek istediğinize emin misiniz?",
+ "SuccessfullyReIndexProject": "\"{0}\" Projesi başarıyla yeniden indekslendi",
+ "ReIndexAllProjectConfirmationMessage": "Tüm projeleri yeniden indekslemek istediğinize emin misiniz?",
+ "SuccessfullyReIndexAllProject": "Tüm projeler başarıyla yeniden indekslendi",
"InThisDocument": "Bu dökümanda",
"GoToTop": "En üste çık",
"Projects": "Proje(ler)",
"NoProjectWarning": "Hiç proje yok!",
"DocumentNotFound": "Aradığınız döküman bulunamadı!",
+ "ProjectNotFound": "Talep edilen proje bulunamadı!",
"NavigationDocumentNotFound": "Bu döküman için menü bulunamadı!",
"DocumentNotFoundInSelectedLanguage": "İstediğiniz dilde belge bulunamadı. Varsayılan dilde belge gösterilir.",
+ "FilterTopics": "Konuları Filtrele",
+ "FullSearch": "Dokümanlarda Ara",
+ "Volo.Docs.Domain:010001": "Elastic search etkin değil",
"MultipleVersionDocumentInfo": "Bu dökümanın birden çok versiyonu bulunmaktadır. Sizin için en uygun olan seçenekleri seçiniz.",
"New": "Yeni",
"Upd": "Günc",
"NewExplanation": "Son iki hafta içinde oluşturuldu.",
- "UpdatedExplanation": "Son iki hafta içinde güncellendi."
+ "UpdatedExplanation": "Son iki hafta içinde güncellendi.",
+ "Volo.Docs.Domain:010002": "ShortName {ShortName} zaten var."
}
}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml
index 7f521de34b..90a754b1a9 100644
--- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml
+++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml
@@ -131,10 +131,10 @@
- @if (Model.FullSearchEnabled)
- {
-