mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 修复 Dto 映射查询属性名不区分大小写 bug #427;
This commit is contained in:
		@@ -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;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user