diff --git a/samples/Sample.MySql/Startup.cs b/samples/Sample.MySql/Startup.cs index 89f16597..b2e790f6 100644 --- a/samples/Sample.MySql/Startup.cs +++ b/samples/Sample.MySql/Startup.cs @@ -151,6 +151,7 @@ namespace Sample.MySql builder .UseMySql(connection, new MySqlServerVersion(new Version())) .UseLoggerFactory(efLogger); + builder.AddInterceptors() // .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking) // .UseLoggerFactory(loggerFactory1) // .EnableSensitiveDataLogging(); @@ -241,6 +242,7 @@ namespace Sample.MySql app.ApplicationServices.UseAutoTryCompensateTable(); + // var shardingRuntimeContext = app.ApplicationServices.GetRequiredService>(); // var virtualDataSource = shardingRuntimeContext.GetVirtualDataSource(); // var connectionString = virtualDataSource.GetConnectionString("dataSourceName"); diff --git a/src/ShardingCore/Core/EntityMetadatas/DefaultEntityMetadataManager.cs b/src/ShardingCore/Core/EntityMetadatas/DefaultEntityMetadataManager.cs index 406f23ad..2feba95c 100644 --- a/src/ShardingCore/Core/EntityMetadatas/DefaultEntityMetadataManager.cs +++ b/src/ShardingCore/Core/EntityMetadatas/DefaultEntityMetadataManager.cs @@ -122,16 +122,19 @@ namespace ShardingCore.Core.EntityMetadatas { if (_shardingConfigOptions.CheckShardingKeyValueGenerated) { + var propertiesMap = efEntityType.GetProperties().ToDictionary(o=>o.Name,o=>o); if (metadata.IsMultiDataSourceMapping) { foreach (var metadataProperty in metadata.ShardingDataSourceProperties) { var propertyName = metadataProperty.Key; - var property = efEntityType.GetProperty(propertyName); - if (property.ValueGenerated != ValueGenerated.Never) + if (propertiesMap.TryGetValue(propertyName, out var property)) { - throw new ShardingCoreConfigException( - $"sharding data source key:{propertyName} is not {nameof(ValueGenerated)}.{nameof(ValueGenerated.Never)}"); + if (property.ValueGenerated != ValueGenerated.Never) + { + throw new ShardingCoreConfigException( + $"sharding data source key:{propertyName} is not {nameof(ValueGenerated)}.{nameof(ValueGenerated.Never)}"); + } } } } @@ -141,11 +144,13 @@ namespace ShardingCore.Core.EntityMetadatas foreach (var metadataProperty in metadata.ShardingTableProperties) { var propertyName = metadataProperty.Key; - var property = efEntityType.GetProperty(propertyName); - if (property.ValueGenerated != ValueGenerated.Never) + if (propertiesMap.TryGetValue(propertyName, out var property)) { - throw new ShardingCoreConfigException( - $"sharding table key:{propertyName} is not {nameof(ValueGenerated)}.{nameof(ValueGenerated.Never)}"); + if (property.ValueGenerated != ValueGenerated.Never) + { + throw new ShardingCoreConfigException( + $"sharding table key:{propertyName} is not {nameof(ValueGenerated)}.{nameof(ValueGenerated.Never)}"); + } } } }