- 修改 Query 查询的实体设置了 IsIgnore 时,可能出现 ET 读取位置偏移 bug;

This commit is contained in:
28810 2019-05-13 17:59:27 +08:00
parent 79e21295c3
commit 5fe35f67e9
5 changed files with 87 additions and 63 deletions

View File

@ -32,6 +32,13 @@ namespace FreeSql.Tests.Sqlite {
[Fact]
public void Query() {
var t0 = g.sqlite.Ado.Query<testallDto>("select * from \"song\"");
var t1 = g.sqlite.Ado.Query<testallDto>("select id, url, create_time from \"song\"");
var t2 = g.sqlite.Ado.Query<testallDto>("select id, url, create_time test_time from \"song\"");
var t3 = g.sqlite.Ado.Query<xxx>("select * from \"song\"");
var t4 = g.sqlite.Ado.Query<(int, string, string)>("select * from \"song\"");
@ -49,5 +56,14 @@ namespace FreeSql.Tests.Sqlite {
public string Path { get; set; }
public string Title2 { get; set; }
}
class testallDto {
public int Id { get; set; }
public string Title { get; set; }
public string Url { get; set; }
public DateTime Test_time { get; set; }
public DateTime Create_time { get; set; }
public bool Is_deleted { get; set; }
}
}
}

View File

@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Version>0.5.15</Version>
<Version>0.5.16</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>

View File

@ -75,7 +75,12 @@ namespace FreeSql.Internal.CommonProvider {
if (isThrowException) throw e;
}
internal static ConcurrentDictionary<Type, PropertyInfo[]> dicQueryTypeGetProperties = new ConcurrentDictionary<Type, PropertyInfo[]>();
internal static ConcurrentDictionary<Type, Dictionary<string, PropertyInfo>> dicQueryTypeGetProperties = new ConcurrentDictionary<Type, Dictionary<string, PropertyInfo>>();
internal Dictionary<string, PropertyInfo> GetQueryTypeProperties(Type type) {
var tb = _util.GetTableByEntity(type);
var props = tb?.Properties ?? dicQueryTypeGetProperties.GetOrAdd(type, k => type.GetProperties().ToDictionary(a => a.Name, a => a, StringComparer.CurrentCultureIgnoreCase));
return props;
}
public List<T> Query<T>(string cmdText, object parms = null) => Query<T>(null, null, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
public List<T> Query<T>(DbTransaction transaction, string cmdText, object parms = null) => Query<T>(null, transaction, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
public List<T> Query<T>(DbConnection connection, DbTransaction transaction, string cmdText, object parms = null) => Query<T>(connection, transaction, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
@ -87,7 +92,7 @@ namespace FreeSql.Internal.CommonProvider {
var type = typeof(T);
string flag = null;
int[] indexes = null;
var props = dicQueryTypeGetProperties.GetOrAdd(type, k => type.GetProperties());
var props = GetQueryTypeProperties(type);
ExecuteReader(connection, transaction, dr => {
if (indexes == null) {
var sbflag = new StringBuilder().Append("query");
@ -97,7 +102,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes = props.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes = props.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag = sbflag.ToString();
}
ret.Add((T)Utils.ExecuteArrayRowReadClassOrTuple(flag, type, indexes, dr, 0, _util).Value);
@ -116,13 +121,13 @@ namespace FreeSql.Internal.CommonProvider {
var type1 = typeof(T1);
string flag1 = null;
int[] indexes1 = null;
var props1 = dicQueryTypeGetProperties.GetOrAdd(type1, k => type1.GetProperties());
var props1 = GetQueryTypeProperties(type1);
var ret2 = new List<T2>();
var type2 = typeof(T2);
string flag2 = null;
int[] indexes2 = null;
var props2 = dicQueryTypeGetProperties.GetOrAdd(type2, k => type1.GetProperties());
var props2 = GetQueryTypeProperties(type2);
ExecuteReaderMultiple(2, connection, transaction, (dr, result) => {
switch(result) {
case 0:
@ -134,7 +139,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes1 = props1.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes1 = props1.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag1 = sbflag.ToString();
}
ret1.Add((T1)Utils.ExecuteArrayRowReadClassOrTuple(flag1, type1, indexes1, dr, 0, _util).Value);
@ -148,7 +153,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes2 = props2.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes2 = props2.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag2 = sbflag.ToString();
}
ret2.Add((T2)Utils.ExecuteArrayRowReadClassOrTuple(flag2, type2, indexes2, dr, 0, _util).Value);
@ -169,19 +174,19 @@ namespace FreeSql.Internal.CommonProvider {
var type1 = typeof(T1);
string flag1 = null;
int[] indexes1 = null;
var props1 = dicQueryTypeGetProperties.GetOrAdd(type1, k => type1.GetProperties());
var props1 = GetQueryTypeProperties(type1);
var ret2 = new List<T2>();
var type2 = typeof(T2);
string flag2 = null;
int[] indexes2 = null;
var props2 = dicQueryTypeGetProperties.GetOrAdd(type2, k => type1.GetProperties());
var props2 = GetQueryTypeProperties(type2);
var ret3 = new List<T3>();
var type3 = typeof(T3);
string flag3 = null;
int[] indexes3 = null;
var props3 = dicQueryTypeGetProperties.GetOrAdd(type3, k => type1.GetProperties());
var props3 = GetQueryTypeProperties(type3);
ExecuteReaderMultiple(3, connection, transaction, (dr, result) => {
switch (result) {
case 0:
@ -193,7 +198,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes1 = props1.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes1 = props1.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag1 = sbflag.ToString();
}
ret1.Add((T1)Utils.ExecuteArrayRowReadClassOrTuple(flag1, type1, indexes1, dr, 0, _util).Value);
@ -207,7 +212,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes2 = props2.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes2 = props2.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag2 = sbflag.ToString();
}
ret2.Add((T2)Utils.ExecuteArrayRowReadClassOrTuple(flag2, type2, indexes2, dr, 0, _util).Value);
@ -221,7 +226,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes3 = props3.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes3 = props3.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag3 = sbflag.ToString();
}
ret3.Add((T3)Utils.ExecuteArrayRowReadClassOrTuple(flag3, type3, indexes3, dr, 0, _util).Value);
@ -242,25 +247,25 @@ namespace FreeSql.Internal.CommonProvider {
var type1 = typeof(T1);
string flag1 = null;
int[] indexes1 = null;
var props1 = dicQueryTypeGetProperties.GetOrAdd(type1, k => type1.GetProperties());
var props1 = GetQueryTypeProperties(type1);
var ret2 = new List<T2>();
var type2 = typeof(T2);
string flag2 = null;
int[] indexes2 = null;
var props2 = dicQueryTypeGetProperties.GetOrAdd(type2, k => type1.GetProperties());
var props2 = GetQueryTypeProperties(type2);
var ret3 = new List<T3>();
var type3 = typeof(T3);
string flag3 = null;
int[] indexes3 = null;
var props3 = dicQueryTypeGetProperties.GetOrAdd(type3, k => type1.GetProperties());
var props3 = GetQueryTypeProperties(type3);
var ret4 = new List<T4>();
var type4 = typeof(T4);
string flag4 = null;
int[] indexes4 = null;
var props4 = dicQueryTypeGetProperties.GetOrAdd(type4, k => type1.GetProperties());
var props4 = GetQueryTypeProperties(type4);
ExecuteReaderMultiple(4, connection, transaction, (dr, result) => {
switch (result) {
case 0:
@ -272,7 +277,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes1 = props1.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes1 = props1.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag1 = sbflag.ToString();
}
ret1.Add((T1)Utils.ExecuteArrayRowReadClassOrTuple(flag1, type1, indexes1, dr, 0, _util).Value);
@ -286,7 +291,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes2 = props2.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes2 = props2.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag2 = sbflag.ToString();
}
ret2.Add((T2)Utils.ExecuteArrayRowReadClassOrTuple(flag2, type2, indexes2, dr, 0, _util).Value);
@ -300,7 +305,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes3 = props3.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes3 = props3.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag3 = sbflag.ToString();
}
ret3.Add((T3)Utils.ExecuteArrayRowReadClassOrTuple(flag3, type3, indexes3, dr, 0, _util).Value);
@ -314,7 +319,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes4 = props4.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes4 = props4.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag4 = sbflag.ToString();
}
ret4.Add((T4)Utils.ExecuteArrayRowReadClassOrTuple(flag4, type4, indexes4, dr, 0, _util).Value);
@ -335,31 +340,31 @@ namespace FreeSql.Internal.CommonProvider {
var type1 = typeof(T1);
string flag1 = null;
int[] indexes1 = null;
var props1 = dicQueryTypeGetProperties.GetOrAdd(type1, k => type1.GetProperties());
var props1 = GetQueryTypeProperties(type1);
var ret2 = new List<T2>();
var type2 = typeof(T2);
string flag2 = null;
int[] indexes2 = null;
var props2 = dicQueryTypeGetProperties.GetOrAdd(type2, k => type1.GetProperties());
var props2 = GetQueryTypeProperties(type2);
var ret3 = new List<T3>();
var type3 = typeof(T3);
string flag3 = null;
int[] indexes3 = null;
var props3 = dicQueryTypeGetProperties.GetOrAdd(type3, k => type1.GetProperties());
var props3 = GetQueryTypeProperties(type3);
var ret4 = new List<T4>();
var type4 = typeof(T4);
string flag4 = null;
int[] indexes4 = null;
var props4 = dicQueryTypeGetProperties.GetOrAdd(type4, k => type1.GetProperties());
var props4 = GetQueryTypeProperties(type4);
var ret5 = new List<T5>();
var type5 = typeof(T5);
string flag5 = null;
int[] indexes5 = null;
var props5 = dicQueryTypeGetProperties.GetOrAdd(type5, k => type1.GetProperties());
var props5 = GetQueryTypeProperties(type5);
ExecuteReaderMultiple(5, connection, transaction, (dr, result) => {
switch (result) {
case 0:
@ -371,7 +376,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes1 = props1.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes1 = props1.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag1 = sbflag.ToString();
}
ret1.Add((T1)Utils.ExecuteArrayRowReadClassOrTuple(flag1, type1, indexes1, dr, 0, _util).Value);
@ -385,7 +390,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes2 = props2.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes2 = props2.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag2 = sbflag.ToString();
}
ret2.Add((T2)Utils.ExecuteArrayRowReadClassOrTuple(flag2, type2, indexes2, dr, 0, _util).Value);
@ -399,7 +404,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes3 = props3.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes3 = props3.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag3 = sbflag.ToString();
}
ret3.Add((T3)Utils.ExecuteArrayRowReadClassOrTuple(flag3, type3, indexes3, dr, 0, _util).Value);
@ -413,7 +418,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes4 = props4.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes4 = props4.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag4 = sbflag.ToString();
}
ret4.Add((T4)Utils.ExecuteArrayRowReadClassOrTuple(flag4, type4, indexes4, dr, 0, _util).Value);
@ -427,7 +432,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes5 = props5.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes5 = props5.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag5 = sbflag.ToString();
}
ret5.Add((T5)Utils.ExecuteArrayRowReadClassOrTuple(flag5, type5, indexes5, dr, 0, _util).Value);

View File

@ -20,7 +20,7 @@ namespace FreeSql.Internal.CommonProvider {
var type = typeof(T);
string flag = null;
int[] indexes = null;
var props = dicQueryTypeGetProperties.GetOrAdd(type, k => type.GetProperties());
var props = GetQueryTypeProperties(type);
await ExecuteReaderAsync(connection, transaction, dr => {
if (indexes == null) {
var sbflag = new StringBuilder().Append("query");
@ -30,7 +30,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes = props.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes = props.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag = sbflag.ToString();
}
ret.Add((T)Utils.ExecuteArrayRowReadClassOrTuple(flag, type, indexes, dr, 0, _util).Value);
@ -50,13 +50,13 @@ namespace FreeSql.Internal.CommonProvider {
var type1 = typeof(T1);
string flag1 = null;
int[] indexes1 = null;
var props1 = dicQueryTypeGetProperties.GetOrAdd(type1, k => type1.GetProperties());
var props1 = GetQueryTypeProperties(type1);
var ret2 = new List<T2>();
var type2 = typeof(T2);
string flag2 = null;
int[] indexes2 = null;
var props2 = dicQueryTypeGetProperties.GetOrAdd(type2, k => type1.GetProperties());
var props2 = GetQueryTypeProperties(type2);
await ExecuteReaderMultipleAsync(2, connection, transaction, (dr, result) => {
switch (result) {
case 0:
@ -68,7 +68,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes1 = props1.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes1 = props1.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag1 = sbflag.ToString();
}
ret1.Add((T1)Utils.ExecuteArrayRowReadClassOrTuple(flag1, type1, indexes1, dr, 0, _util).Value);
@ -82,7 +82,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes2 = props2.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes2 = props2.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag2 = sbflag.ToString();
}
ret2.Add((T2)Utils.ExecuteArrayRowReadClassOrTuple(flag2, type2, indexes2, dr, 0, _util).Value);
@ -104,19 +104,19 @@ namespace FreeSql.Internal.CommonProvider {
var type1 = typeof(T1);
string flag1 = null;
int[] indexes1 = null;
var props1 = dicQueryTypeGetProperties.GetOrAdd(type1, k => type1.GetProperties());
var props1 = GetQueryTypeProperties(type1);
var ret2 = new List<T2>();
var type2 = typeof(T2);
string flag2 = null;
int[] indexes2 = null;
var props2 = dicQueryTypeGetProperties.GetOrAdd(type2, k => type1.GetProperties());
var props2 = GetQueryTypeProperties(type2);
var ret3 = new List<T3>();
var type3 = typeof(T3);
string flag3 = null;
int[] indexes3 = null;
var props3 = dicQueryTypeGetProperties.GetOrAdd(type3, k => type1.GetProperties());
var props3 = GetQueryTypeProperties(type3);
await ExecuteReaderMultipleAsync(3, connection, transaction, (dr, result) => {
switch (result) {
case 0:
@ -128,7 +128,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes1 = props1.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes1 = props1.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag1 = sbflag.ToString();
}
ret1.Add((T1)Utils.ExecuteArrayRowReadClassOrTuple(flag1, type1, indexes1, dr, 0, _util).Value);
@ -142,7 +142,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes2 = props2.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes2 = props2.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag2 = sbflag.ToString();
}
ret2.Add((T2)Utils.ExecuteArrayRowReadClassOrTuple(flag2, type2, indexes2, dr, 0, _util).Value);
@ -156,7 +156,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes3 = props3.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes3 = props3.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag3 = sbflag.ToString();
}
ret3.Add((T3)Utils.ExecuteArrayRowReadClassOrTuple(flag3, type3, indexes3, dr, 0, _util).Value);
@ -178,25 +178,25 @@ namespace FreeSql.Internal.CommonProvider {
var type1 = typeof(T1);
string flag1 = null;
int[] indexes1 = null;
var props1 = dicQueryTypeGetProperties.GetOrAdd(type1, k => type1.GetProperties());
var props1 = GetQueryTypeProperties(type1);
var ret2 = new List<T2>();
var type2 = typeof(T2);
string flag2 = null;
int[] indexes2 = null;
var props2 = dicQueryTypeGetProperties.GetOrAdd(type2, k => type1.GetProperties());
var props2 = GetQueryTypeProperties(type2);
var ret3 = new List<T3>();
var type3 = typeof(T3);
string flag3 = null;
int[] indexes3 = null;
var props3 = dicQueryTypeGetProperties.GetOrAdd(type3, k => type1.GetProperties());
var props3 = GetQueryTypeProperties(type3);
var ret4 = new List<T4>();
var type4 = typeof(T4);
string flag4 = null;
int[] indexes4 = null;
var props4 = dicQueryTypeGetProperties.GetOrAdd(type4, k => type1.GetProperties());
var props4 = GetQueryTypeProperties(type4);
await ExecuteReaderMultipleAsync(4, connection, transaction, (dr, result) => {
switch (result) {
case 0:
@ -208,7 +208,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes1 = props1.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes1 = props1.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag1 = sbflag.ToString();
}
ret1.Add((T1)Utils.ExecuteArrayRowReadClassOrTuple(flag1, type1, indexes1, dr, 0, _util).Value);
@ -222,7 +222,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes2 = props2.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes2 = props2.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag2 = sbflag.ToString();
}
ret2.Add((T2)Utils.ExecuteArrayRowReadClassOrTuple(flag2, type2, indexes2, dr, 0, _util).Value);
@ -236,7 +236,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes3 = props3.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes3 = props3.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag3 = sbflag.ToString();
}
ret3.Add((T3)Utils.ExecuteArrayRowReadClassOrTuple(flag3, type3, indexes3, dr, 0, _util).Value);
@ -250,7 +250,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes4 = props4.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes4 = props4.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag4 = sbflag.ToString();
}
ret4.Add((T4)Utils.ExecuteArrayRowReadClassOrTuple(flag4, type4, indexes4, dr, 0, _util).Value);
@ -272,31 +272,31 @@ namespace FreeSql.Internal.CommonProvider {
var type1 = typeof(T1);
string flag1 = null;
int[] indexes1 = null;
var props1 = dicQueryTypeGetProperties.GetOrAdd(type1, k => type1.GetProperties());
var props1 = GetQueryTypeProperties(type1);
var ret2 = new List<T2>();
var type2 = typeof(T2);
string flag2 = null;
int[] indexes2 = null;
var props2 = dicQueryTypeGetProperties.GetOrAdd(type2, k => type1.GetProperties());
var props2 = GetQueryTypeProperties(type2);
var ret3 = new List<T3>();
var type3 = typeof(T3);
string flag3 = null;
int[] indexes3 = null;
var props3 = dicQueryTypeGetProperties.GetOrAdd(type3, k => type1.GetProperties());
var props3 = GetQueryTypeProperties(type3);
var ret4 = new List<T4>();
var type4 = typeof(T4);
string flag4 = null;
int[] indexes4 = null;
var props4 = dicQueryTypeGetProperties.GetOrAdd(type4, k => type1.GetProperties());
var props4 = GetQueryTypeProperties(type4);
var ret5 = new List<T5>();
var type5 = typeof(T5);
string flag5 = null;
int[] indexes5 = null;
var props5 = dicQueryTypeGetProperties.GetOrAdd(type5, k => type1.GetProperties());
var props5 = GetQueryTypeProperties(type5);
await ExecuteReaderMultipleAsync(5, connection, transaction, (dr, result) => {
switch (result) {
case 0:
@ -308,7 +308,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes1 = props1.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes1 = props1.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag1 = sbflag.ToString();
}
ret1.Add((T1)Utils.ExecuteArrayRowReadClassOrTuple(flag1, type1, indexes1, dr, 0, _util).Value);
@ -322,7 +322,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes2 = props2.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes2 = props2.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag2 = sbflag.ToString();
}
ret2.Add((T2)Utils.ExecuteArrayRowReadClassOrTuple(flag2, type2, indexes2, dr, 0, _util).Value);
@ -336,7 +336,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes3 = props3.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes3 = props3.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag3 = sbflag.ToString();
}
ret3.Add((T3)Utils.ExecuteArrayRowReadClassOrTuple(flag3, type3, indexes3, dr, 0, _util).Value);
@ -350,7 +350,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes4 = props4.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes4 = props4.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag4 = sbflag.ToString();
}
ret4.Add((T4)Utils.ExecuteArrayRowReadClassOrTuple(flag4, type4, indexes4, dr, 0, _util).Value);
@ -364,7 +364,7 @@ namespace FreeSql.Internal.CommonProvider {
sbflag.Append(name).Append(":").Append(a).Append(",");
dic.Add(name, a);
}
indexes5 = props5.Select(a => dic.TryGetValue(a.Name, out var tryint) ? tryint : -1).ToArray();
indexes5 = props5.Select(a => dic.TryGetValue(a.Key, out var tryint) ? tryint : -1).ToArray();
flag5 = sbflag.ToString();
}
ret5.Add((T5)Utils.ExecuteArrayRowReadClassOrTuple(flag5, type5, indexes5, dr, 0, _util).Value);

View File

@ -941,7 +941,10 @@ namespace FreeSql.Internal {
var props = type.GetProperties();//.ToDictionary(a => a.Name, a => a, StringComparer.CurrentCultureIgnoreCase);
var propIndex = 0;
foreach (var prop in props) {
if (typetb.ColumnsByCsIgnore.ContainsKey(prop.Name)) continue;
if (typetb.ColumnsByCsIgnore.ContainsKey(prop.Name)) {
++propIndex;
continue;
}
var readType = typetb.ColumnsByCs.TryGetValue(prop.Name, out var trycol) ? trycol.Attribute.MapType : prop.PropertyType;
var ispkExp = new List<Expression>();