mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	折腾 net45 版本,增加 MySqlConnector 实现
This commit is contained in:
		@@ -1,8 +1,8 @@
 | 
			
		||||
<Project Sdk="Microsoft.NET.Sdk">
 | 
			
		||||
 | 
			
		||||
	<PropertyGroup>
 | 
			
		||||
		<TargetFramework>netstandard2.0</TargetFramework>
 | 
			
		||||
		<Version>0.6.1</Version>
 | 
			
		||||
		<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
 | 
			
		||||
		<Version>0.6.2</Version>
 | 
			
		||||
		<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
			
		||||
		<Authors>YeXiangQin</Authors>
 | 
			
		||||
		<Description>FreeSql is the most convenient ORM in dotnet. It supports Mysql, Postgresql, SqlServer, Oracle and Sqlite.</Description>
 | 
			
		||||
@@ -23,7 +23,8 @@
 | 
			
		||||
	</PropertyGroup>
 | 
			
		||||
 | 
			
		||||
	<ItemGroup>
 | 
			
		||||
		<PackageReference Include="SafeObjectPool" Version="2.0.1" />
 | 
			
		||||
	  <PackageReference Include="SafeObjectPool" Version="2.0.2" />
 | 
			
		||||
	  <PackageReference Include="System.ValueTuple" Version="4.5.0" />
 | 
			
		||||
	</ItemGroup>
 | 
			
		||||
 | 
			
		||||
</Project>
 | 
			
		||||
 
 | 
			
		||||
@@ -108,6 +108,7 @@ namespace FreeSql {
 | 
			
		||||
			switch(_dataType) {
 | 
			
		||||
				case DataType.MySql:
 | 
			
		||||
					type = Type.GetType("FreeSql.MySql.MySqlProvider`1,FreeSql.Provider.MySql")?.MakeGenericType(typeof(TMark));
 | 
			
		||||
					if (type == null) type = Type.GetType("FreeSql.MySql.MySqlProvider`1,FreeSql.Provider.MySqlConnector")?.MakeGenericType(typeof(TMark));
 | 
			
		||||
					if (type == null) throw new Exception("缺少 FreeSql 数据库实现包:FreeSql.Provider.MySql.dll,可前往 nuget 下载");
 | 
			
		||||
					break;
 | 
			
		||||
				case DataType.SqlServer: type = Type.GetType("FreeSql.SqlServer.SqlServerProvider`1,FreeSql.Provider.SqlServer")?.MakeGenericType(typeof(TMark));
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
					flag = sbflag.ToString();
 | 
			
		||||
				}
 | 
			
		||||
				ret.Add((T)Utils.ExecuteArrayRowReadClassOrTuple(flag, type, indexes, dr, 0, _util).Value);
 | 
			
		||||
				return Task.CompletedTask;
 | 
			
		||||
				return Task.FromResult(false);
 | 
			
		||||
			}, cmdType, cmdText, cmdParms);
 | 
			
		||||
			return ret;
 | 
			
		||||
		}
 | 
			
		||||
@@ -88,7 +88,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
						ret2.Add((T2)Utils.ExecuteArrayRowReadClassOrTuple(flag2, type2, indexes2, dr, 0, _util).Value);
 | 
			
		||||
						break;
 | 
			
		||||
				}
 | 
			
		||||
				return Task.CompletedTask;
 | 
			
		||||
				return Task.FromResult(false);
 | 
			
		||||
			}, cmdType, cmdText, cmdParms);
 | 
			
		||||
			return (ret1, ret2);
 | 
			
		||||
		}
 | 
			
		||||
@@ -162,7 +162,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
						ret3.Add((T3)Utils.ExecuteArrayRowReadClassOrTuple(flag3, type3, indexes3, dr, 0, _util).Value);
 | 
			
		||||
						break;
 | 
			
		||||
				}
 | 
			
		||||
				return Task.CompletedTask;
 | 
			
		||||
				return Task.FromResult(false);
 | 
			
		||||
			}, cmdType, cmdText, cmdParms);
 | 
			
		||||
			return (ret1, ret2, ret3);
 | 
			
		||||
		}
 | 
			
		||||
@@ -256,7 +256,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
						ret4.Add((T4)Utils.ExecuteArrayRowReadClassOrTuple(flag4, type4, indexes4, dr, 0, _util).Value);
 | 
			
		||||
						break;
 | 
			
		||||
				}
 | 
			
		||||
				return Task.CompletedTask;
 | 
			
		||||
				return Task.FromResult(false);
 | 
			
		||||
			}, cmdType, cmdText, cmdParms);
 | 
			
		||||
			return (ret1, ret2, ret3, ret4);
 | 
			
		||||
		}
 | 
			
		||||
@@ -370,7 +370,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
						ret5.Add((T5)Utils.ExecuteArrayRowReadClassOrTuple(flag5, type5, indexes5, dr, 0, _util).Value);
 | 
			
		||||
						break;
 | 
			
		||||
				}
 | 
			
		||||
				return Task.CompletedTask;
 | 
			
		||||
				return Task.FromResult(false);
 | 
			
		||||
			}, cmdType, cmdText, cmdParms);
 | 
			
		||||
			return (ret1, ret2, ret3, ret4, ret5);
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -285,7 +285,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
				await _orm.Ado.ExecuteReaderAsync(_connection, _transaction, dr => {
 | 
			
		||||
					var read = Utils.ExecuteArrayRowReadClassOrTuple(flagStr, type, null, dr, 0, _commonUtils);
 | 
			
		||||
					ret.Add((TTuple)read.Value);
 | 
			
		||||
					return Task.CompletedTask;
 | 
			
		||||
					return Task.FromResult(false);
 | 
			
		||||
				}, CommandType.Text, sql, dbParms);
 | 
			
		||||
			} catch (Exception ex) {
 | 
			
		||||
				exception = ex;
 | 
			
		||||
@@ -337,7 +337,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
						foreach (var other in otherData)
 | 
			
		||||
							other.retlist.Add(_commonExpression.ReadAnonymous(other.read, dr, ref idx, false));
 | 
			
		||||
					}
 | 
			
		||||
					return Task.CompletedTask;
 | 
			
		||||
					return Task.FromResult(false);
 | 
			
		||||
				}, CommandType.Text, sql, dbParms);
 | 
			
		||||
			} catch (Exception ex) {
 | 
			
		||||
				exception = ex;
 | 
			
		||||
@@ -431,7 +431,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
				await _orm.Ado.ExecuteReaderAsync(_connection, _transaction, dr => {
 | 
			
		||||
					var index = -1;
 | 
			
		||||
					ret.Add((TReturn)_commonExpression.ReadAnonymous(af.map, dr, ref index, false));
 | 
			
		||||
					return Task.CompletedTask;
 | 
			
		||||
					return Task.FromResult(false);
 | 
			
		||||
				}, CommandType.Text, sql, dbParms);
 | 
			
		||||
			} catch (Exception ex) {
 | 
			
		||||
				exception = ex;
 | 
			
		||||
 
 | 
			
		||||
@@ -83,7 +83,12 @@ namespace FreeSql.Internal {
 | 
			
		||||
					};
 | 
			
		||||
				if (colattr._IsNullable == null) colattr._IsNullable = tp?.isnullable;
 | 
			
		||||
				if (string.IsNullOrEmpty(colattr.DbType)) colattr.DbType = tp?.dbtypeFull ?? "varchar(255)";
 | 
			
		||||
				colattr.DbType = colattr.DbType.ToUpper();
 | 
			
		||||
				if (colattr.DbType.StartsWith("set(") || colattr.DbType.StartsWith("enum(")) {
 | 
			
		||||
					var leftBt = colattr.DbType.IndexOf('(');
 | 
			
		||||
					colattr.DbType = colattr.DbType.Substring(0, leftBt).ToUpper() + colattr.DbType.Substring(leftBt);
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
					colattr.DbType = colattr.DbType.ToUpper();
 | 
			
		||||
 | 
			
		||||
				if (tp != null && tp.Value.isnullable == null) colattr.IsNullable = tp.Value.dbtypeFull.Contains("NOT NULL") == false;
 | 
			
		||||
				if (colattr.DbType?.Contains("NOT NULL") == true) colattr.IsNullable = false;
 | 
			
		||||
@@ -1164,7 +1169,14 @@ namespace FreeSql.Internal {
 | 
			
		||||
				}
 | 
			
		||||
				var typeOrg = type;
 | 
			
		||||
				if (type.IsNullableType()) type = type.GenericTypeArguments.First();
 | 
			
		||||
				if (type.IsEnum) return Expression.Return(returnTarget, Expression.Call(MethodEnumParse, Expression.Constant(type, typeof(Type)), Expression.Call(MethodToString, valueExp), Expression.Constant(true, typeof(bool))));
 | 
			
		||||
				if (type.IsEnum)
 | 
			
		||||
					return Expression.Block(
 | 
			
		||||
						Expression.IfThenElse(
 | 
			
		||||
							Expression.Equal(Expression.TypeAs(valueExp, typeof(string)), Expression.Constant(string.Empty)),
 | 
			
		||||
							Expression.Return(returnTarget, Expression.Convert(Expression.Default(type), typeof(object))),
 | 
			
		||||
							Expression.Return(returnTarget, Expression.Call(MethodEnumParse, Expression.Constant(type, typeof(Type)), Expression.Call(MethodToString, valueExp), Expression.Constant(true, typeof(bool))))
 | 
			
		||||
						)
 | 
			
		||||
					);
 | 
			
		||||
				Expression tryparseExp = null;
 | 
			
		||||
				Expression tryparseBooleanExp = null;
 | 
			
		||||
				ParameterExpression tryparseVarExp = null;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user