- 修复 Dto 映射查询属性名不区分大小写 bug #427;

This commit is contained in:
28810 2020-08-19 16:11:22 +08:00
parent 09d7623b1b
commit 306f619e90
4 changed files with 21 additions and 22 deletions

View File

@ -16,8 +16,8 @@ namespace FreeSql
/// - 保存的时候,实体的属性集合是空的,如何操作?记录全部删除?<para></para> /// - 保存的时候,实体的属性集合是空的,如何操作?记录全部删除?<para></para>
/// - 保存的时候,由于数据库中记录非常之多,那么只想保存子表的部分数据,或者只需要添加,如何操作?<para></para> /// - 保存的时候,由于数据库中记录非常之多,那么只想保存子表的部分数据,或者只需要添加,如何操作?<para></para>
/// <para></para> /// <para></para>
/// 【多对多】模型下,我们对中间表的保存是完整对比操作,对外部实体的操作只作新增(注意不会更新) /// 【多对多】模型下,我们对中间表的保存是完整对比操作,对外部实体的操作只作新增(*注意不会更新)<para></para>
/// - 属性集合为空时,删除他们的所有关联数据(中间表) /// - 属性集合为空时,删除他们的所有关联数据(中间表)<para></para>
/// - 属性集合不为空时,与数据库存在的关联数据(中间表)完全对比,计算出应该删除和添加的记录 /// - 属性集合不为空时,与数据库存在的关联数据(中间表)完全对比,计算出应该删除和添加的记录
/// </summary> /// </summary>
public bool EnableAddOrUpdateNavigateList { get; set; } = false; public bool EnableAddOrUpdateNavigateList { get; set; } = false;

View File

@ -86,8 +86,8 @@
- 保存的时候,实体的属性集合是空的,如何操作?记录全部删除?<para></para> - 保存的时候,实体的属性集合是空的,如何操作?记录全部删除?<para></para>
- 保存的时候,由于数据库中记录非常之多,那么只想保存子表的部分数据,或者只需要添加,如何操作?<para></para> - 保存的时候,由于数据库中记录非常之多,那么只想保存子表的部分数据,或者只需要添加,如何操作?<para></para>
<para></para> <para></para>
【多对多】模型下,我们对中间表的保存是完整对比操作,对外部实体的操作只作新增(注意不会更新) 【多对多】模型下,我们对中间表的保存是完整对比操作,对外部实体的操作只作新增(*注意不会更新)<para></para>
- 属性集合为空时,删除他们的所有关联数据(中间表) - 属性集合为空时,删除他们的所有关联数据(中间表)<para></para>
- 属性集合不为空时,与数据库存在的关联数据(中间表)完全对比,计算出应该删除和添加的记录 - 属性集合不为空时,与数据库存在的关联数据(中间表)完全对比,计算出应该删除和添加的记录
</summary> </summary>
</member> </member>
@ -130,13 +130,6 @@
清空状态数据 清空状态数据
</summary> </summary>
</member> </member>
<member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
<summary>
根据 lambda 条件删除数据
</summary>
<param name="predicate"></param>
<returns></returns>
</member>
<member name="M:FreeSql.DbSet`1.Add(`0)"> <member name="M:FreeSql.DbSet`1.Add(`0)">
<summary> <summary>
添加 添加
@ -532,14 +525,5 @@
<param name="that"></param> <param name="that"></param>
<returns></returns> <returns></returns>
</member> </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> </members>
</doc> </doc>

View File

@ -435,9 +435,24 @@ namespace FreeSql.Tests
} }
public enum TestUpdateModelEnum { x1, x2, x3 } public enum TestUpdateModelEnum { x1, x2, x3 }
public class Cadre
{
public int? education { get; set; }
public int? Education { get; set; }
}
public class TbCadre
{
public Guid Id { get; set; }
public int? Education2 { get; set; }
}
[Fact] [Fact]
public void Test1() public void Test1()
{ {
g.sqlite.Insert(new[] { new TbCadre { Education2 = 10 }, new TbCadre { Education2 = 11 } }).ExecuteAffrows();
var tst102 = g.sqlite.Select<TbCadre>().First(a => new Cadre { Education = a.Education2 });
var testemoji = new TestGuidId { xxx = "💐🌸💮🌹🌺🌻🌼🌷🌱🌿🍀" }; var testemoji = new TestGuidId { xxx = "💐🌸💮🌹🌺🌻🌼🌷🌱🌿🍀" };
Assert.Equal(1, g.sqlserver.Insert(testemoji).ExecuteAffrows()); Assert.Equal(1, g.sqlserver.Insert(testemoji).ExecuteAffrows());
var emoji = g.sqlserver.Select<TestGuidId>().Where(a => a.Id == testemoji.Id).First(); var emoji = g.sqlserver.Select<TestGuidId>().Where(a => a.Id == testemoji.Id).First();

View File

@ -102,7 +102,7 @@ namespace FreeSql.Internal
{ {
var child = new ReadAnonymousTypeInfo var child = new ReadAnonymousTypeInfo
{ {
Property = tb.Properties.TryGetValue(map[idx].Column.CsName, out var tryprop) ? tryprop : tb.Type.GetProperty(map[idx].Column.CsName, BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance), Property = tb.Properties.TryGetValue(map[idx].Column.CsName, out var tryprop) ? tryprop : tb.Type.GetProperty(map[idx].Column.CsName, BindingFlags.Public | BindingFlags.Instance),
CsName = map[idx].Column.CsName, CsName = map[idx].Column.CsName,
DbField = $"{map[idx].Table.Alias}.{_common.QuoteSqlName(map[idx].Column.Attribute.Name)}", DbField = $"{map[idx].Table.Alias}.{_common.QuoteSqlName(map[idx].Column.Attribute.Name)}",
CsType = map[idx].Column.CsType, CsType = map[idx].Column.CsType,
@ -214,7 +214,7 @@ namespace FreeSql.Internal
if (initAssignExp == null) continue; if (initAssignExp == null) continue;
var child = new ReadAnonymousTypeInfo var child = new ReadAnonymousTypeInfo
{ {
Property = initExp.Type.GetProperty(initExp.Bindings[a].Member.Name, BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance), Property = initExp.Type.GetProperty(initExp.Bindings[a].Member.Name, BindingFlags.Public | BindingFlags.Instance),
CsName = initExp.Bindings[a].Member.Name, CsName = initExp.Bindings[a].Member.Name,
CsType = initAssignExp.Expression.Type, CsType = initAssignExp.Expression.Type,
MapType = initAssignExp.Expression.Type MapType = initAssignExp.Expression.Type