mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 修复 FreeSql.DbContext 对同一实体重复 Update,第二次无效的 Bug;
This commit is contained in:
		@@ -408,7 +408,18 @@ namespace FreeSql
 | 
				
			|||||||
            foreach (var item in data)
 | 
					            foreach (var item in data)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (_dicUpdateTimes.ContainsKey(item))
 | 
					                if (_dicUpdateTimes.ContainsKey(item))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var itemCopy = CreateEntityState(item).Value;
 | 
				
			||||||
                    await DbContextFlushCommandAsync();
 | 
					                    await DbContextFlushCommandAsync();
 | 
				
			||||||
 | 
					                    if (_table.VersionColumn != null)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        var itemVersion = _db.OrmOriginal.GetEntityValueWithPropertyName(_entityType, item, _table.VersionColumn.CsName);
 | 
				
			||||||
 | 
					                        _db.OrmOriginal.MapEntityValue(_entityType, itemCopy, item);
 | 
				
			||||||
 | 
					                        _db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, item, _table.VersionColumn.CsName, itemVersion);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                        _db.OrmOriginal.MapEntityValue(_entityType, itemCopy, item);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
                _dicUpdateTimes.Add(item, 1);
 | 
					                _dicUpdateTimes.Add(item, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                var state = CreateEntityState(item);
 | 
					                var state = CreateEntityState(item);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -451,7 +451,18 @@ namespace FreeSql
 | 
				
			|||||||
            foreach (var item in data)
 | 
					            foreach (var item in data)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (_dicUpdateTimes.ContainsKey(item))
 | 
					                if (_dicUpdateTimes.ContainsKey(item))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var itemCopy = CreateEntityState(item).Value;
 | 
				
			||||||
                    DbContextFlushCommand();
 | 
					                    DbContextFlushCommand();
 | 
				
			||||||
 | 
					                    if (_table.VersionColumn != null)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        var itemVersion = _db.OrmOriginal.GetEntityValueWithPropertyName(_entityType, item, _table.VersionColumn.CsName);
 | 
				
			||||||
 | 
					                        _db.OrmOriginal.MapEntityValue(_entityType, itemCopy, item);
 | 
				
			||||||
 | 
					                        _db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, item, _table.VersionColumn.CsName, itemVersion);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                        _db.OrmOriginal.MapEntityValue(_entityType, itemCopy, item);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
                _dicUpdateTimes.Add(item, 1);
 | 
					                _dicUpdateTimes.Add(item, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                var state = CreateEntityState(item);
 | 
					                var state = CreateEntityState(item);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -329,7 +329,10 @@
 | 
				
			|||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="M:FreeSql.IBaseRepository`1.BeginEdit(System.Collections.Generic.List{`0})">
 | 
					        <member name="M:FreeSql.IBaseRepository`1.BeginEdit(System.Collections.Generic.List{`0})">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            开始编辑数据,然后调用方法 EndEdit 分析出添加<EFBFBD><EFBFBD>方法只支持单表操作,不支持导航属性级联保存
 | 
					            开始编辑数据,然后调用方法 EndEdit 分析出添加、修改、删除 SQL 语句进行执行<para></para>
 | 
				
			||||||
 | 
					            场景:winform 加载表数据后,一顿添加、修改、删除操作之后,最后才点击【保存】<para></para><para></para>
 | 
				
			||||||
 | 
					            示例:https://github.com/dotnetcore/FreeSql/issues/397<para></para>
 | 
				
			||||||
 | 
					            注意:* 本方法只支持单表操作,不支持导航属性级联保存
 | 
				
			||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
            <param name="data"></param>
 | 
					            <param name="data"></param>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
@@ -531,21 +534,3 @@
 | 
				
			|||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
    </members>
 | 
					    </members>
 | 
				
			||||||
</doc>
 | 
					</doc>
 | 
				
			||||||
me="M:FreeSqlDbContextExtensions.CreateUnitOfWork(IFreeSql)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            创建基于仓储功能的工作单元,务必使用 using 包含使用
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="that"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </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>
 | 
					 | 
				
			||||||
</doc>
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,6 +36,11 @@ namespace FreeSql.Tests.Firebird
 | 
				
			|||||||
        public void ExistsTable()
 | 
					        public void ExistsTable()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var fsql = g.firebird;
 | 
					            var fsql = g.firebird;
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                fsql.Ado.ExecuteNonQuery("drop table test_existstb011");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch { }
 | 
				
			||||||
            Assert.False(fsql.DbFirst.ExistsTable("test_existstb011"));
 | 
					            Assert.False(fsql.DbFirst.ExistsTable("test_existstb011"));
 | 
				
			||||||
            Assert.False(fsql.DbFirst.ExistsTable("test_existstb011", false));
 | 
					            Assert.False(fsql.DbFirst.ExistsTable("test_existstb011", false));
 | 
				
			||||||
            fsql.CodeFirst.SyncStructure(typeof(test_existstb011));
 | 
					            fsql.CodeFirst.SyncStructure(typeof(test_existstb011));
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user