- 优化 MySql StringLength/MaxLength -2 产生 LongText 映射;

This commit is contained in:
28810
2020-06-06 19:02:41 +08:00
parent 926d8353c1
commit b9948f4508
17 changed files with 311 additions and 165 deletions

View File

@ -89,11 +89,11 @@ namespace FreeSql.DataAnnotations
/// Oracle -> nvarchar2(100)<para></para>
/// Sqlite -> nvarchar(100)<para></para>
/// ---<para></para>
/// StringLength = -1 时,对应 DbType<para></para>
/// MySql -> text<para></para>
/// StringLength &lt; 0 时,对应 DbType<para></para>
/// MySql -> text (StringLength = -2 时,对应 DbType longtext)<para></para>
/// SqlServer -> nvarchar(max)<para></para>
/// PostgreSQL -> text<para></para>
/// Oracle -> nvarchar2(4000)<para></para>
/// Oracle -> nclob<para></para>
/// Sqlite -> text<para></para>
/// </summary>
public int StringLength { get => _StringLength ?? 0; set => _StringLength = value; }

View File

@ -90,11 +90,11 @@
Oracle -> nvarchar2(100)<para></para>
Sqlite -> nvarchar(100)<para></para>
---<para></para>
StringLength = -1 时,对应 DbType<para></para>
MySql -> text<para></para>
StringLength &lt; 0 时,对应 DbType<para></para>
MySql -> text (StringLength = -2 时,对应 DbType longtext)<para></para>
SqlServer -> nvarchar(max)<para></para>
PostgreSQL -> text<para></para>
Oracle -> nvarchar2(4000)<para></para>
Oracle -> nclob<para></para>
Sqlite -> text<para></para>
</summary>
</member>

View File

@ -1218,12 +1218,12 @@ namespace FreeSql.Internal.CommonProvider
break;
case DataType.Oracle:
case DataType.OdbcOracle:
case DataType.Dameng:
case DataType.OdbcDameng:
_tosqlAppendContent = $" for update{(noawait ? " nowait" : "")}";
break;
case DataType.Sqlite:
break;
case DataType.OdbcDameng:
case DataType.Dameng:
case DataType.OdbcKingbaseES:
_tosqlAppendContent = $" for update{(noawait ? " nowait" : "")}";
break;

View File

@ -232,7 +232,8 @@ namespace FreeSql.Internal
{
case DataType.MySql:
case DataType.OdbcMySql:
if (strlen < 0) colattr.DbType = "TEXT";
if (strlen == -2) colattr.DbType = "LONGTEXT";
else if (strlen < 0) colattr.DbType = "TEXT";
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
break;
case DataType.SqlServer:
@ -250,9 +251,13 @@ namespace FreeSql.Internal
if (strlen < 0) colattr.DbType = "NCLOB"; //v1.3.2+ https://github.com/dotnetcore/FreeSql/issues/259
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
break;
case DataType.Dameng:
if (strlen < 0) colattr.DbType = "TEXT";
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
break;
case DataType.OdbcOracle:
case DataType.OdbcDameng:
if (strlen < 0) colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1(4000)");
if (strlen < 0) colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1(4000)"); //ODBC 不支持 NCLOB
else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
break;
case DataType.Sqlite: