diff --git a/src/ShardingCore/Core/EntityMetadatas/EntityMetadata.cs b/src/ShardingCore/Core/EntityMetadatas/EntityMetadata.cs index 27f756f7..040589c9 100644 --- a/src/ShardingCore/Core/EntityMetadatas/EntityMetadata.cs +++ b/src/ShardingCore/Core/EntityMetadatas/EntityMetadata.cs @@ -81,6 +81,10 @@ namespace ShardingCore.Core.EntityMetadatas /// 逻辑表名 /// public string LogicTableName { get; private set; } + /** + * 对象表所属schema + */ + public string Schema { get; private set; } /// /// 主键 @@ -105,6 +109,7 @@ namespace ShardingCore.Core.EntityMetadatas PrimaryKeyProperties = dbEntityType.FindPrimaryKey()?.Properties?.Select(o => o.PropertyInfo)?.ToList() ?? new List(); IsSingleKey = PrimaryKeyProperties.Count == 1; + Schema = dbEntityType.GetEntityTypeSchema(); } diff --git a/src/ShardingCore/EFCores/ShardingModelCustomizer.cs b/src/ShardingCore/EFCores/ShardingModelCustomizer.cs index 080f66cd..2adf18a8 100644 --- a/src/ShardingCore/EFCores/ShardingModelCustomizer.cs +++ b/src/ShardingCore/EFCores/ShardingModelCustomizer.cs @@ -87,7 +87,7 @@ namespace ShardingCore.EFCores var tableName = entityMetadata.LogicTableName; if (string.IsNullOrWhiteSpace(tableName)) throw new ArgumentNullException($"{shardingEntity}: not found logic table name。"); - entity.ToTable($"{tableName}{tableSeparator}{tail}"); + entity.ToTable($"{tableName}{tableSeparator}{tail}",entityMetadata.Schema); } } } \ No newline at end of file diff --git a/src/ShardingCore/Extensions/InternalExtensions/InternalIEntityTypeExtension.cs b/src/ShardingCore/Extensions/InternalExtensions/InternalIEntityTypeExtension.cs index c34c6f9a..1e34224a 100644 --- a/src/ShardingCore/Extensions/InternalExtensions/InternalIEntityTypeExtension.cs +++ b/src/ShardingCore/Extensions/InternalExtensions/InternalIEntityTypeExtension.cs @@ -22,6 +22,16 @@ namespace ShardingCore.Extensions.InternalExtensions #endif #if EFCORE2 var tableName = entityType.Relational().TableName; +#endif + return tableName; + } + public static string GetEntityTypeSchema(this IEntityType entityType) + { +#if !EFCORE2 + var tableName = entityType.GetSchema(); +#endif +#if EFCORE2 + var tableName = entityType.Relational().Schema; #endif return tableName; }