折腾 net45 版本,增加 MySqlConnector 实现

This commit is contained in:
28810
2019-05-29 12:28:18 +08:00
parent afae7ce431
commit 62fd3b8f97
15 changed files with 124 additions and 51 deletions

View File

@ -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>

View File

@ -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));

View File

@ -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);
}

View File

@ -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;

View File

@ -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;