优化多字段分片下的默认检查属性导致的属性不存在问题

This commit is contained in:
xuejiaming 2024-08-29 13:32:41 +08:00
parent a2008bce88
commit 618f973e8f
2 changed files with 15 additions and 8 deletions

View File

@ -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<IShardingRuntimeContext<DefaultShardingDbContext>>();
// var virtualDataSource = shardingRuntimeContext.GetVirtualDataSource();
// var connectionString = virtualDataSource.GetConnectionString("dataSourceName");

View File

@ -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)}");
}
}
}
}