Browse Source

Convert entity property to entry property type.

Fix #4917
pull/4920/head
maliming 6 years ago
parent
commit
6697958e79
  1. 4
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs
  2. 6
      framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Domain/ExtraProperties_Tests.cs
  3. 2
      framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Domain/TestEntityExtensionConfigurator.cs

4
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs

@ -314,7 +314,9 @@ namespace Volo.Abp.EntityFrameworkCore
continue;
}
entry.Property(property.Name).CurrentValue = entity.GetProperty(property.Name);
var entryProperty = entry.Property(property.Name);
var entityProperty = entity.GetProperty(property.Name);
entryProperty.CurrentValue = Convert.ChangeType(entityProperty, entryProperty.Metadata.ClrType);
}
}

6
framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Domain/ExtraProperties_Tests.cs

@ -22,11 +22,13 @@ namespace Volo.Abp.EntityFrameworkCore.Domain
var london = await CityRepository.FindByNameAsync("London");
london.GetProperty<string>("PhoneCode").ShouldBe("42");
london.ExtraProperties["PhoneCode"] = "53";
london.ExtraProperties["PhoneCode"] = 123456;
london.ExtraProperties["Rank"] = "88";
await CityRepository.UpdateAsync(london);
var london2 = await CityRepository.FindByNameAsync("London");
london2.GetProperty<string>("PhoneCode").ShouldBe("53");
london2.GetProperty<string>("PhoneCode").ShouldBe("123456");
london2.GetProperty<int>("Rank").ShouldBe(88);
}
}
}

2
framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Domain/TestEntityExtensionConfigurator.cs

@ -16,6 +16,8 @@ namespace Volo.Abp.EntityFrameworkCore.Domain
.MapEfCoreProperty<City, string>(
"PhoneCode",
p => p.HasMaxLength(8)
).MapEfCoreProperty<City, int>(
"Rank"
);
});
}

Loading…
Cancel
Save