mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 增加 StringLength/MaxLength 对 byte[] 的支持;
This commit is contained in:
		@@ -272,6 +272,48 @@ namespace FreeSql.Internal
 | 
			
		||||
                            break;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                if (colattr.MapType == typeof(byte[]) && colattr.StringLength != 0)
 | 
			
		||||
                {
 | 
			
		||||
                    int strlen = colattr.StringLength;
 | 
			
		||||
                    var charPatten = @"(VARBINARY|BINARY|BYTEA)\s*(\([^\)]*\))?";
 | 
			
		||||
                    switch (common._orm.Ado.DataType)
 | 
			
		||||
                    {
 | 
			
		||||
                        case DataType.MySql:
 | 
			
		||||
                        case DataType.OdbcMySql:
 | 
			
		||||
                            if (strlen == -2) colattr.DbType = "LONGBLOB";
 | 
			
		||||
                            else if (strlen < 0) colattr.DbType = "BLOB";
 | 
			
		||||
                            else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
 | 
			
		||||
                            break;
 | 
			
		||||
                        case DataType.SqlServer:
 | 
			
		||||
                        case DataType.OdbcSqlServer:
 | 
			
		||||
                            if (strlen < 0) colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1(MAX)");
 | 
			
		||||
                            else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
 | 
			
		||||
                            break;
 | 
			
		||||
                        case DataType.PostgreSQL:
 | 
			
		||||
                        case DataType.OdbcPostgreSQL:
 | 
			
		||||
                        case DataType.OdbcKingbaseES:
 | 
			
		||||
                        case DataType.ShenTong: //驱动引发的异常:“System.Data.OscarClient.OscarException”(位于 System.Data.OscarClient.dll 中)
 | 
			
		||||
                            colattr.DbType = "BYTEA"; //变长二进制串
 | 
			
		||||
                            break;
 | 
			
		||||
                        case DataType.Oracle:
 | 
			
		||||
                            colattr.DbType = "BLOB";
 | 
			
		||||
                            break;
 | 
			
		||||
                        case DataType.Dameng:
 | 
			
		||||
                            colattr.DbType = "BLOB";
 | 
			
		||||
                            break;
 | 
			
		||||
                        case DataType.OdbcOracle:
 | 
			
		||||
                        case DataType.OdbcDameng:
 | 
			
		||||
                            colattr.DbType = "BLOB";
 | 
			
		||||
                            break;
 | 
			
		||||
                        case DataType.Sqlite:
 | 
			
		||||
                            colattr.DbType = "BLOB";
 | 
			
		||||
                            break;
 | 
			
		||||
                        case DataType.MsAccess:
 | 
			
		||||
                            if (strlen < 0) colattr.DbType = "BLOB";
 | 
			
		||||
                            else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})");
 | 
			
		||||
                            break;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (trytb.Columns.ContainsKey(colattr.Name)) throw new Exception($"ColumnAttribute.Name {colattr.Name} 重复存在,请检查(注意:不区分大小写)");
 | 
			
		||||
                if (trytb.ColumnsByCs.ContainsKey(p.Name)) throw new Exception($"属性名 {p.Name} 重复存在,请检查(注意:不区分大小写)");
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user