mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
- 修复 Column DbType 与 StringLength 多次替换问题;
This commit is contained in:
parent
a8c72b19da
commit
e69fc68f5d
@ -733,15 +733,6 @@
|
|||||||
<param name="modelBuilder"></param>
|
<param name="modelBuilder"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:FreeSqlDbContextExtensions.ApplyConfigurationsFromAssembly(FreeSql.ICodeFirst,System.Reflection.Assembly,System.Func{System.Type,System.Boolean})">
|
|
||||||
<summary>
|
|
||||||
根据Assembly扫描所有继承IEntityTypeConfiguration<T>的配置类
|
|
||||||
</summary>
|
|
||||||
<param name="codeFirst"></param>
|
|
||||||
<param name="assembly"></param>
|
|
||||||
<param name="predicate"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:FreeSqlDbContextExtensions.CreateDbContext(IFreeSql)">
|
<member name="M:FreeSqlDbContextExtensions.CreateDbContext(IFreeSql)">
|
||||||
<summary>
|
<summary>
|
||||||
创建普通数据上下文档对象
|
创建普通数据上下文档对象
|
||||||
@ -800,14 +791,5 @@
|
|||||||
<param name="that"></param>
|
<param name="that"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
|
|
||||||
<summary>
|
|
||||||
批量注入 Repository,可以参考代码自行调整
|
|
||||||
</summary>
|
|
||||||
<param name="services"></param>
|
|
||||||
<param name="globalDataFilter"></param>
|
|
||||||
<param name="assemblies"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
@ -347,22 +347,26 @@ namespace FreeSql.Internal
|
|||||||
if (colattr.MapType.NullableTypeOrThis() == typeof(string) && colattr.StringLength != 0)
|
if (colattr.MapType.NullableTypeOrThis() == typeof(string) && colattr.StringLength != 0)
|
||||||
{
|
{
|
||||||
int strlen = colattr.StringLength;
|
int strlen = colattr.StringLength;
|
||||||
var charPatten = @"(CHARACTER|CHAR2|CHAR)\s*(\([^\)]*\))?";
|
var charPattern = @"(CHARACTER|CHAR2|CHAR)\s*(\([^\)]*\))?";
|
||||||
|
var replaceCounter = 0;
|
||||||
var strNotNull = colattr.IsNullable == false ? " NOT NULL" : "";
|
var strNotNull = colattr.IsNullable == false ? " NOT NULL" : "";
|
||||||
switch (common._orm.Ado.DataType)
|
switch (common._orm.Ado.DataType)
|
||||||
{
|
{
|
||||||
case DataType.MySql:
|
case DataType.MySql:
|
||||||
case DataType.OdbcMySql:
|
case DataType.OdbcMySql:
|
||||||
case DataType.CustomMySql:
|
case DataType.CustomMySql:
|
||||||
if (strlen == -2) colattr.DbType = $"LONGTEXT{strNotNull}";
|
if (strlen == -2) colattr.DbType = $"LONGTEXT{strNotNull}";
|
||||||
else if (strlen < 0) colattr.DbType = $"TEXT{strNotNull}";
|
else if (strlen < 0) colattr.DbType = $"TEXT{strNotNull}";
|
||||||
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
|
else colattr.DbType = Regex.Replace(colattr.DbType, charPattern, m =>
|
||||||
|
replaceCounter++ == 0 ? $"{m.Groups[1].Value}({strlen})" : m.Groups[0].Value);
|
||||||
break;
|
break;
|
||||||
case DataType.SqlServer:
|
case DataType.SqlServer:
|
||||||
case DataType.OdbcSqlServer:
|
case DataType.OdbcSqlServer:
|
||||||
case DataType.CustomSqlServer:
|
case DataType.CustomSqlServer:
|
||||||
if (strlen < 0) colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1(MAX)");
|
if (strlen < 0) colattr.DbType = Regex.Replace(colattr.DbType, charPattern, m =>
|
||||||
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
|
replaceCounter++ == 0 ? $"{m.Groups[1].Value}(MAX)" : m.Groups[0].Value);
|
||||||
|
else colattr.DbType = Regex.Replace(colattr.DbType, charPattern, m =>
|
||||||
|
replaceCounter++ == 0 ? $"{m.Groups[1].Value}({strlen})" : m.Groups[0].Value);
|
||||||
break;
|
break;
|
||||||
case DataType.PostgreSQL:
|
case DataType.PostgreSQL:
|
||||||
case DataType.OdbcPostgreSQL:
|
case DataType.OdbcPostgreSQL:
|
||||||
@ -371,39 +375,48 @@ namespace FreeSql.Internal
|
|||||||
case DataType.OdbcKingbaseES:
|
case DataType.OdbcKingbaseES:
|
||||||
case DataType.ShenTong:
|
case DataType.ShenTong:
|
||||||
if (strlen < 0) colattr.DbType = $"TEXT{strNotNull}";
|
if (strlen < 0) colattr.DbType = $"TEXT{strNotNull}";
|
||||||
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
|
else colattr.DbType = Regex.Replace(colattr.DbType, charPattern, m =>
|
||||||
|
replaceCounter++ == 0 ? $"{m.Groups[1].Value}({strlen})" : m.Groups[0].Value);
|
||||||
break;
|
break;
|
||||||
case DataType.Oracle:
|
case DataType.Oracle:
|
||||||
case DataType.CustomOracle:
|
case DataType.CustomOracle:
|
||||||
if (strlen < 0) colattr.DbType = $"NCLOB{strNotNull}"; //v1.3.2+ https://github.com/dotnetcore/FreeSql/issues/259
|
if (strlen < 0) colattr.DbType = $"NCLOB{strNotNull}"; //v1.3.2+ https://github.com/dotnetcore/FreeSql/issues/259
|
||||||
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
|
else colattr.DbType = Regex.Replace(colattr.DbType, charPattern, m =>
|
||||||
|
replaceCounter++ == 0 ? $"{m.Groups[1].Value}({strlen})" : m.Groups[0].Value);
|
||||||
break;
|
break;
|
||||||
case DataType.Dameng:
|
case DataType.Dameng:
|
||||||
if (strlen < 0) colattr.DbType = $"TEXT{strNotNull}";
|
if (strlen < 0) colattr.DbType = $"TEXT{strNotNull}";
|
||||||
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
|
else colattr.DbType = Regex.Replace(colattr.DbType, charPattern, m =>
|
||||||
|
replaceCounter++ == 0 ? $"{m.Groups[1].Value}({strlen})" : m.Groups[0].Value);
|
||||||
break;
|
break;
|
||||||
case DataType.OdbcOracle:
|
case DataType.OdbcOracle:
|
||||||
case DataType.OdbcDameng:
|
case DataType.OdbcDameng:
|
||||||
if (strlen < 0) colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1(4000)"); //ODBC 不支持 NCLOB
|
if (strlen < 0) colattr.DbType = Regex.Replace(colattr.DbType, charPattern, m =>
|
||||||
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
|
replaceCounter++ == 0 ? $"{m.Groups[1].Value}(4000)" : m.Groups[0].Value); //ODBC 不支持 NCLOB
|
||||||
|
else colattr.DbType = Regex.Replace(colattr.DbType, charPattern, m =>
|
||||||
|
replaceCounter++ == 0 ? $"{m.Groups[1].Value}({strlen})" : m.Groups[0].Value);
|
||||||
break;
|
break;
|
||||||
case DataType.Sqlite:
|
case DataType.Sqlite:
|
||||||
if (strlen < 0) colattr.DbType = $"TEXT{strNotNull}";
|
if (strlen < 0) colattr.DbType = $"TEXT{strNotNull}";
|
||||||
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
|
else colattr.DbType = Regex.Replace(colattr.DbType, charPattern, m =>
|
||||||
|
replaceCounter++ == 0 ? $"{m.Groups[1].Value}({strlen})" : m.Groups[0].Value);
|
||||||
break;
|
break;
|
||||||
case DataType.MsAccess:
|
case DataType.MsAccess:
|
||||||
charPatten = @"(CHAR|CHAR2|CHARACTER|TEXT)\s*(\([^\)]*\))?";
|
charPattern = @"(CHAR|CHAR2|CHARACTER|TEXT)\s*(\([^\)]*\))?";
|
||||||
if (strlen < 0) colattr.DbType = $"LONGTEXT{strNotNull}";
|
if (strlen < 0) colattr.DbType = $"LONGTEXT{strNotNull}";
|
||||||
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
|
else colattr.DbType = Regex.Replace(colattr.DbType, charPattern, m =>
|
||||||
|
replaceCounter++ == 0 ? $"{m.Groups[1].Value}({strlen})" : m.Groups[0].Value);
|
||||||
break;
|
break;
|
||||||
case DataType.Firebird:
|
case DataType.Firebird:
|
||||||
charPatten = @"(CHAR|CHAR2|CHARACTER|TEXT)\s*(\([^\)]*\))?";
|
charPattern = @"(CHAR|CHAR2|CHARACTER|TEXT)\s*(\([^\)]*\))?";
|
||||||
if (strlen < 0) colattr.DbType = $"BLOB SUB_TYPE 1{strNotNull}";
|
if (strlen < 0) colattr.DbType = $"BLOB SUB_TYPE 1{strNotNull}";
|
||||||
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
|
else colattr.DbType = Regex.Replace(colattr.DbType, charPattern, m =>
|
||||||
|
replaceCounter++ == 0 ? $"{m.Groups[1].Value}({strlen})" : m.Groups[0].Value);
|
||||||
break;
|
break;
|
||||||
case DataType.GBase:
|
case DataType.GBase:
|
||||||
if (strlen < 0) colattr.DbType = $"TEXT{strNotNull}";
|
if (strlen < 0) colattr.DbType = $"TEXT{strNotNull}";
|
||||||
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
|
else colattr.DbType = Regex.Replace(colattr.DbType, charPattern, m =>
|
||||||
|
replaceCounter++ == 0 ? $"{m.Groups[1].Value}({strlen})" : m.Groups[0].Value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -412,7 +425,7 @@ namespace FreeSql.Internal
|
|||||||
if (colattr.MapType == typeof(byte[]) && colattr.StringLength != 0)
|
if (colattr.MapType == typeof(byte[]) && colattr.StringLength != 0)
|
||||||
{
|
{
|
||||||
int strlen = colattr.StringLength;
|
int strlen = colattr.StringLength;
|
||||||
var bytePatten = @"(VARBINARY|BINARY|BYTEA)\s*(\([^\)]*\))?";
|
var bytePattern = @"(VARBINARY|BINARY|BYTEA)\s*(\([^\)]*\))?";
|
||||||
var strNotNull = colattr.IsNullable == false ? " NOT NULL" : "";
|
var strNotNull = colattr.IsNullable == false ? " NOT NULL" : "";
|
||||||
switch (common._orm.Ado.DataType)
|
switch (common._orm.Ado.DataType)
|
||||||
{
|
{
|
||||||
@ -421,13 +434,13 @@ namespace FreeSql.Internal
|
|||||||
case DataType.CustomMySql:
|
case DataType.CustomMySql:
|
||||||
if (strlen == -2) colattr.DbType = $"LONGBLOB{strNotNull}";
|
if (strlen == -2) colattr.DbType = $"LONGBLOB{strNotNull}";
|
||||||
else if (strlen < 0) colattr.DbType = $"BLOB{strNotNull}";
|
else if (strlen < 0) colattr.DbType = $"BLOB{strNotNull}";
|
||||||
else colattr.DbType = Regex.Replace(colattr.DbType, bytePatten, $"$1({strlen})");
|
else colattr.DbType = Regex.Replace(colattr.DbType, bytePattern, $"$1({strlen})");
|
||||||
break;
|
break;
|
||||||
case DataType.SqlServer:
|
case DataType.SqlServer:
|
||||||
case DataType.OdbcSqlServer:
|
case DataType.OdbcSqlServer:
|
||||||
case DataType.CustomSqlServer:
|
case DataType.CustomSqlServer:
|
||||||
if (strlen < 0) colattr.DbType = Regex.Replace(colattr.DbType, bytePatten, $"$1(MAX)");
|
if (strlen < 0) colattr.DbType = Regex.Replace(colattr.DbType, bytePattern, $"$1(MAX)");
|
||||||
else colattr.DbType = Regex.Replace(colattr.DbType, bytePatten, $"$1({strlen})");
|
else colattr.DbType = Regex.Replace(colattr.DbType, bytePattern, $"$1({strlen})");
|
||||||
break;
|
break;
|
||||||
case DataType.PostgreSQL:
|
case DataType.PostgreSQL:
|
||||||
case DataType.OdbcPostgreSQL:
|
case DataType.OdbcPostgreSQL:
|
||||||
@ -453,7 +466,7 @@ namespace FreeSql.Internal
|
|||||||
break;
|
break;
|
||||||
case DataType.MsAccess:
|
case DataType.MsAccess:
|
||||||
if (strlen < 0) colattr.DbType = $"BLOB{strNotNull}";
|
if (strlen < 0) colattr.DbType = $"BLOB{strNotNull}";
|
||||||
else colattr.DbType = Regex.Replace(colattr.DbType, bytePatten, $"$1({strlen})");
|
else colattr.DbType = Regex.Replace(colattr.DbType, bytePattern, $"$1({strlen})");
|
||||||
break;
|
break;
|
||||||
case DataType.Firebird:
|
case DataType.Firebird:
|
||||||
colattr.DbType = $"BLOB{strNotNull}";
|
colattr.DbType = $"BLOB{strNotNull}";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user