mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
- 修复 IAdo.Query\<匿名类\>(sql) 错误;
This commit is contained in:
parent
ced9fbb476
commit
bf84bf0fcb
@ -532,14 +532,5 @@
|
||||
<param name="that"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
|
||||
<summary>
|
||||
批量注入 Repository,可以参考代码自行调整
|
||||
</summary>
|
||||
<param name="services"></param>
|
||||
<param name="globalDataFilter"></param>
|
||||
<param name="assemblies"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
|
@ -1463,7 +1463,7 @@ namespace FreeSql.Internal
|
||||
var name = row2.GetName(a);
|
||||
//expando[name] = row2.GetValue(a);
|
||||
if (expandodic.ContainsKey(name)) continue;
|
||||
expandodic.Add(name, Utils.InternalDataReaderGetValue(_commonUtils, row2, a));
|
||||
expandodic.Add(name, Utils.InternalDataReaderGetValue(commonUtils2, row2, a));
|
||||
}
|
||||
//expando = expandodic;
|
||||
return new RowInfo(expandodic, fc);
|
||||
@ -1471,6 +1471,8 @@ namespace FreeSql.Internal
|
||||
return dynamicFunc;// Expression.Lambda<Func<Type, int[], DbDataReader, int, RowInfo>>(null);
|
||||
}
|
||||
|
||||
if (type.IsAnonymousType()) return ExecuteArrayRowReadAnonymousType;
|
||||
|
||||
//类注入属性
|
||||
var typetb = GetTableByEntity(type, _commonUtils);
|
||||
var retExp = Expression.Variable(type, "ret");
|
||||
@ -1596,12 +1598,13 @@ namespace FreeSql.Internal
|
||||
var propIndex = 0;
|
||||
foreach (var prop in props)
|
||||
{
|
||||
if (typetb.ColumnsByCsIgnore.ContainsKey(prop.Name))
|
||||
if (typetb?.ColumnsByCsIgnore.ContainsKey(prop.Name) == true)
|
||||
{
|
||||
++propIndex;
|
||||
continue;
|
||||
}
|
||||
var readType = typetb.ColumnsByCs.TryGetValue(prop.Name, out var trycol) ? trycol.Attribute.MapType : prop.PropertyType;
|
||||
ColumnInfo trycol = null;
|
||||
var readType = typetb?.ColumnsByCs.TryGetValue(prop.Name, out trycol) == true ? trycol.Attribute.MapType : prop.PropertyType;
|
||||
|
||||
var ispkExp = new List<Expression>();
|
||||
var propGetSetMethod = prop.GetSetMethod(true);
|
||||
@ -1700,6 +1703,18 @@ namespace FreeSql.Internal
|
||||
return func(typeOrg, indexes, row, dataIndex, _commonUtils);
|
||||
}
|
||||
|
||||
internal static RowInfo ExecuteArrayRowReadAnonymousType(Type type2, int[] indexes2, DbDataReader row2, int dataindex2, CommonUtils commonUtils2)
|
||||
{
|
||||
var ctor = type2.InternalGetTypeConstructor0OrFirst();
|
||||
var ctorParms = new object[ctor.GetParameters().Length];
|
||||
if (indexes2?.Length != ctorParms.Length)
|
||||
indexes2 = ctor.GetParameters().Select(c => row2.GetOrdinal(c.Name)).ToArray();
|
||||
|
||||
for (var c = 0; c < ctorParms.Length; c++)
|
||||
ctorParms[c] = Utils.InternalDataReaderGetValue(commonUtils2, row2, indexes2[c]);
|
||||
return new RowInfo(ctor.Invoke(ctorParms), ctorParms.Length);
|
||||
}
|
||||
|
||||
internal static MethodInfo MethodExecuteArrayRowReadClassOrTuple = typeof(Utils).GetMethod("ExecuteArrayRowReadClassOrTuple", BindingFlags.Static | BindingFlags.NonPublic);
|
||||
internal static MethodInfo MethodGetDataReaderValue = typeof(Utils).GetMethod("GetDataReaderValue", BindingFlags.Static | BindingFlags.NonPublic);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user