mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
- 修复 Dto 映射查询属性名不区分大小写 bug #427;
This commit is contained in:
parent
09d7623b1b
commit
306f619e90
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user