Skip to content

Commit a4dca34

Browse files
committed
update demo
1 parent 930f8f4 commit a4dca34

File tree

2 files changed

+38
-36
lines changed

2 files changed

+38
-36
lines changed

Examples/base_entity/Program.cs

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1877,41 +1877,42 @@ int LocalConcurrentDictionaryIsTypeKey(Type dictType, int level = 1)
18771877
}).Where(a => a.ConcurrentDictionarys.Length > 0).ToArray();
18781878

18791879
#region pgsql poco
1880-
//fsql.Aop.ParseExpression += (_, e) =>
1881-
//{
1882-
// //解析 POCO Jsonb a.Customer.Name
1883-
// if (e.Expression is MemberExpression memExp)
1884-
// {
1885-
// var parentMemExps = new Stack<MemberExpression>();
1886-
// parentMemExps.Push(memExp);
1887-
// while (true)
1888-
// {
1889-
// switch (memExp.Expression.NodeType)
1890-
// {
1891-
// case ExpressionType.MemberAccess:
1892-
// memExp = memExp.Expression as MemberExpression;
1893-
// if (memExp == null) return;
1894-
// parentMemExps.Push(memExp);
1895-
// break;
1896-
// case ExpressionType.Parameter:
1897-
// var tb = fsql.CodeFirst.GetTableByEntity(memExp.Expression.Type);
1898-
// if (tb == null) return;
1899-
// if (tb.ColumnsByCs.TryGetValue(parentMemExps.Pop().Member.Name, out var trycol) == false) return;
1900-
// if (new[] { typeof(JToken), typeof(JObject), typeof(JArray) }.Contains(trycol.Attribute.MapType.NullableTypeOrThis()) == false) return;
1901-
// var tmpcol = tb.ColumnsByPosition.OrderBy(a => a.Attribute.Name.Length).First();
1902-
// var result = e.FreeParse(Expression.MakeMemberAccess(memExp.Expression, tb.Properties[tmpcol.CsName]));
1903-
// result = result.Replace(tmpcol.Attribute.Name, trycol.Attribute.Name);
1904-
// while (parentMemExps.Any())
1905-
// {
1906-
// memExp = parentMemExps.Pop();
1907-
// result = $"{result}->>'{memExp.Member.Name}'";
1908-
// }
1909-
// e.Result = result;
1910-
// return;
1911-
// }
1912-
// }
1913-
// }
1914-
//};
1880+
fsql.Aop.ParseExpression += (_, e) =>
1881+
{
1882+
if (e.Expression.IsParameter() == false) return;
1883+
//解析 POCO Jsonb a.Customer.Name
1884+
if (e.Expression is MemberExpression memExp)
1885+
{
1886+
var parentMemExps = new Stack<MemberExpression>();
1887+
parentMemExps.Push(memExp);
1888+
while (true)
1889+
{
1890+
switch (memExp.Expression.NodeType)
1891+
{
1892+
case ExpressionType.MemberAccess:
1893+
memExp = memExp.Expression as MemberExpression;
1894+
if (memExp == null) return;
1895+
parentMemExps.Push(memExp);
1896+
break;
1897+
case ExpressionType.Parameter:
1898+
var tb = fsql.CodeFirst.GetTableByEntity(memExp.Expression.Type);
1899+
if (tb == null) return;
1900+
if (tb.ColumnsByCs.TryGetValue(parentMemExps.Pop().Member.Name, out var trycol) == false) return;
1901+
if (new[] { typeof(JToken), typeof(JObject), typeof(JArray) }.Contains(trycol.Attribute.MapType.NullableTypeOrThis()) == false) return;
1902+
var tmpcol = tb.ColumnsByPosition.OrderBy(a => a.Attribute.Name.Length).First();
1903+
var result = e.FreeParse(Expression.MakeMemberAccess(memExp.Expression, tb.Properties[tmpcol.CsName]));
1904+
result = result.Replace(tmpcol.Attribute.Name, trycol.Attribute.Name);
1905+
while (parentMemExps.Any())
1906+
{
1907+
memExp = parentMemExps.Pop();
1908+
result = $"{result}->>'{memExp.Member.Name}'";
1909+
}
1910+
e.Result = result;
1911+
return;
1912+
}
1913+
}
1914+
}
1915+
};
19151916

19161917
//void RegisterPocoType(Type pocoType)
19171918
//{
@@ -1951,7 +1952,7 @@ int LocalConcurrentDictionaryIsTypeKey(Type dictType, int level = 1)
19511952
// .ToSql();
19521953
#endregion
19531954

1954-
1955+
19551956

19561957
fsql.Aop.AuditValue += new EventHandler<FreeSql.Aop.AuditValueEventArgs>((_, e) =>
19571958
{

FreeSql.Tests/FreeSql.Tests/Issues/1549.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public void Poco()
2020
RegisterPocoType(typeof(Customer)); //注删 POCO 类型
2121
fsql.Aop.ParseExpression += (_, e) =>
2222
{
23+
if (e.Expression.IsParameter() == false) return;
2324
//解析 POCO Jsonb a.Customer.Name
2425
if (e.Expression is MemberExpression memExp)
2526
{

0 commit comments

Comments
 (0)