From 1f2369da3c442ae714c42bd337d8371e3ec157de Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 14 Apr 2021 09:53:03 +0800 Subject: [PATCH] Use Enum.Parse to convert the enum. Related: https://github.com/abpframework/abp/pull/8602 --- .../Volo/Abp/EntityFrameworkCore/AbpDbContext.cs | 2 +- .../Domain/ExtraProperties_Tests.cs | 13 +++++++++++++ .../Domain/TestEntityExtensionConfigurator.cs | 6 ++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs index f706e6c0f4..cda8c02416 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs @@ -351,7 +351,7 @@ namespace Volo.Abp.EntityFrameworkCore } else if (conversionType.IsEnum) { - entryProperty.CurrentValue = Enum.ToObject(conversionType, entityProperty); + entryProperty.CurrentValue = Enum.Parse(conversionType, entityProperty.ToString(), ignoreCase: true); } else { diff --git a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Domain/ExtraProperties_Tests.cs b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Domain/ExtraProperties_Tests.cs index aa1e0080b5..ec269d4258 100644 --- a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Domain/ExtraProperties_Tests.cs +++ b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Domain/ExtraProperties_Tests.cs @@ -31,6 +31,9 @@ namespace Volo.Abp.EntityFrameworkCore.Domain london.ExtraProperties["ZipCode"] = null; london.ExtraProperties["Established"] = DateTime.MinValue; london.ExtraProperties["Guid"] = "a7ae2efe-d8d6-466b-92e3-da14aa6e1c5b"; + london.ExtraProperties["EnumNumber"] = 2L; + london.ExtraProperties["EnumNumberString"] = "2"; + london.ExtraProperties["EnumLiteral"] = "White"; await CityRepository.UpdateAsync(london); var london2 = await CityRepository.FindByNameAsync("London"); @@ -39,6 +42,9 @@ namespace Volo.Abp.EntityFrameworkCore.Domain london2.GetProperty("ZipCode").ShouldBe(null); london2.GetProperty("Established").ShouldBe(DateTime.MinValue); london2.GetProperty("Guid").ShouldBe(new Guid("a7ae2efe-d8d6-466b-92e3-da14aa6e1c5b")); + london2.GetProperty("EnumNumber").ShouldBe(Color.White); + london2.GetProperty("EnumNumberString").ShouldBe(Color.White); + london2.GetProperty("EnumLiteral").ShouldBe(Color.White); } [Fact] @@ -52,5 +58,12 @@ namespace Volo.Abp.EntityFrameworkCore.Domain indexes.ShouldContain(x => x.IsUnique); }); } + + public enum Color + { + Red = 0, + Blue = 1, + White = 2 + } } } diff --git a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Domain/TestEntityExtensionConfigurator.cs b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Domain/TestEntityExtensionConfigurator.cs index 15868e3966..469dfbdfd4 100644 --- a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Domain/TestEntityExtensionConfigurator.cs +++ b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Domain/TestEntityExtensionConfigurator.cs @@ -29,6 +29,12 @@ namespace Volo.Abp.EntityFrameworkCore.Domain "Established" ).MapEfCoreProperty( "Guid" + ).MapEfCoreProperty( + "EnumNumber" + ).MapEfCoreProperty( + "EnumNumberString" + ).MapEfCoreProperty( + "EnumLiteral" ); }); }