mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-07-15 23:13:42 +08:00
-
This commit is contained in:
parent
40f93b2109
commit
fb48a5426e
@ -12,6 +12,7 @@ namespace OrmTest.Models
|
|||||||
}
|
}
|
||||||
public class ViewModelStudent2
|
public class ViewModelStudent2
|
||||||
{
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
public Student Student { get; set; }
|
public Student Student { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ namespace OrmTest.UnitTest
|
|||||||
{
|
{
|
||||||
using (var db = GetInstance())
|
using (var db = GetInstance())
|
||||||
{
|
{
|
||||||
db.Database.IsEnableLogEvent = true;
|
//db.Database.IsEnableLogEvent = true;
|
||||||
db.Database.LogEventStarting = (sql, pars) =>
|
db.Database.LogEventStarting = (sql, pars) =>
|
||||||
{
|
{
|
||||||
Console.WriteLine(sql + " " + pars);
|
Console.WriteLine(sql + " " + pars);
|
||||||
@ -38,9 +38,10 @@ namespace OrmTest.UnitTest
|
|||||||
|
|
||||||
#region dr ot entity
|
#region dr ot entity
|
||||||
db.IgnoreComumns.Add("TestId", "Student");
|
db.IgnoreComumns.Add("TestId", "Student");
|
||||||
var dr2 = db.Queryable<Student>().Select(it => new { newid = it.Id, obj = it }).ToList();
|
|
||||||
var dr1 = db.Queryable<Student>().Select(it => new { newid = it.Id }).ToList();
|
var dr1 = db.Queryable<Student>().Select(it => new { newid = it.Id }).ToList();
|
||||||
var x=db.RewritableMethods.SerializeObject(new { newid = 1, obj = new School() { Id = 1 } });
|
var dr2 = db.Queryable<Student>().Select(it => new { newid = it.Id, obj = it }).ToList();
|
||||||
|
var dr3 = db.Queryable<Student>().Select(it => new ViewModelStudent2{ Student=it }).ToList();
|
||||||
|
var dr4 = db.Queryable<Student>().Select(it => new ViewModelStudent2 { Student = it, Name =it.Name }).ToList();
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,35 +18,64 @@ namespace SqlSugar
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public ExpandoObject DataReaderToExpandoObject(IDataReader reader)
|
public ExpandoObject DataReaderToExpandoObject(IDataReader reader)
|
||||||
{
|
{
|
||||||
ExpandoObject d = new ExpandoObject();
|
ExpandoObject result = new ExpandoObject();
|
||||||
|
var dic = ((IDictionary<string, object>)result);
|
||||||
for (int i = 0; i < reader.FieldCount; i++)
|
for (int i = 0; i < reader.FieldCount; i++)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
((IDictionary<string, object>)d).Add(reader.GetName(i), reader.GetValue(i));
|
dic.Add(reader.GetName(i), reader.GetValue(i));
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
((IDictionary<string, object>)d).Add(reader.GetName(i), null);
|
dic.Add(reader.GetName(i), null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return d;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<T> DataReaderToDynamicList<T>(IDataReader reader)
|
public List<T> DataReaderToDynamicList<T>(IDataReader reader)
|
||||||
{
|
{
|
||||||
var list = new List<T>();
|
var tType = typeof(T);
|
||||||
|
var classProperties = tType.GetProperties().Where(it => it.PropertyType.IsClass()).ToList();
|
||||||
|
var reval = new List<T>();
|
||||||
if (reader != null && !reader.IsClosed)
|
if (reader != null && !reader.IsClosed)
|
||||||
{
|
{
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
var expandoObject = DataReaderToExpandoObject(reader);
|
var expandoObject = DataReaderToExpandoObject(reader);
|
||||||
|
var dic = (IDictionary<string,object>)expandoObject;
|
||||||
|
foreach (var item in classProperties)
|
||||||
|
{
|
||||||
|
var startsWithName = item.Name + "_";
|
||||||
|
List<string> removeKeys = new List<string>();
|
||||||
|
foreach (var d in dic)
|
||||||
|
{
|
||||||
|
if (d.Key.StartsWith(startsWithName)) {
|
||||||
|
removeKeys.Add(d.Key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (removeKeys.Any()) {
|
||||||
|
var keyValues = removeKeys.Select(it => new KeyValuePair<string, object>(it.Replace(startsWithName, null), dic[it])).ToList();
|
||||||
|
foreach (var key in removeKeys)
|
||||||
|
{
|
||||||
|
dic.Remove(key);
|
||||||
|
}
|
||||||
|
var obj = Activator.CreateInstance(item.PropertyType, true);
|
||||||
|
var ps = obj.GetType().GetProperties();
|
||||||
|
foreach (var keyValue in keyValues)
|
||||||
|
{
|
||||||
|
ps.Single(it => it.Name == keyValue.Key).SetValue(obj,keyValue.Value);
|
||||||
|
}
|
||||||
|
dic.Add(item.Name, obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
var stringValue = SerializeObject(expandoObject);
|
var stringValue = SerializeObject(expandoObject);
|
||||||
list.Add((T)DeserializeObject<T>(stringValue));
|
reval.Add((T)DeserializeObject<T>(stringValue));
|
||||||
}
|
}
|
||||||
reader.Close();
|
reader.Close();
|
||||||
}
|
}
|
||||||
return list;
|
return reval;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
Loading…
Reference in New Issue
Block a user