mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 01:05:27 +08:00 
			
		
		
		
	Merge branch 'master' of https://github.com/dotnetcore/FreeSql
This commit is contained in:
		@@ -1,14 +1,10 @@
 | 
				
			|||||||
using FreeSql;
 | 
					using System;
 | 
				
			||||||
 | 
					using System.ComponentModel;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using FreeSql;
 | 
				
			||||||
using FreeSql.DataAnnotations;
 | 
					using FreeSql.DataAnnotations;
 | 
				
			||||||
using Microsoft.AspNetCore.Mvc;
 | 
					using Microsoft.AspNetCore.Mvc;
 | 
				
			||||||
using Microsoft.Extensions.DependencyInjection;
 | 
					 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.ComponentModel;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using System.Reflection;
 | 
					 | 
				
			||||||
using System.Threading;
 | 
					 | 
				
			||||||
using System.Threading.Tasks;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace aspnetcore_transaction.Controllers
 | 
					namespace aspnetcore_transaction.Controllers
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -25,7 +21,7 @@ namespace aspnetcore_transaction.Controllers
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        [HttpGet("1")]
 | 
					        [HttpGet("1")]
 | 
				
			||||||
        //[Transactional]
 | 
					        //[Transactional]
 | 
				
			||||||
        async public Task<object> Get([FromServices] BaseRepository<Song> repoSong, [FromServices] BaseRepository<Detail> repoDetail, [FromServices] SongRepository repoSong2,
 | 
					        public async Task<object> Get([FromServices] BaseRepository<Song> repoSong, [FromServices] BaseRepository<Detail> repoDetail, [FromServices] SongRepository repoSong2,
 | 
				
			||||||
            [FromServices] SongService serviceSong)
 | 
					            [FromServices] SongService serviceSong)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            //repoSong.Insert(new Song());
 | 
					            //repoSong.Insert(new Song());
 | 
				
			||||||
@@ -39,7 +35,7 @@ namespace aspnetcore_transaction.Controllers
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        [HttpGet("2")]
 | 
					        [HttpGet("2")]
 | 
				
			||||||
        //[Transactional]
 | 
					        //[Transactional]
 | 
				
			||||||
        async public Task<object> GetAsync([FromServices] BaseRepository<Song> repoSong, [FromServices] BaseRepository<Detail> repoDetail, [FromServices] SongRepository repoSong2,
 | 
					        public async Task<object> GetAsync([FromServices] BaseRepository<Song> repoSong, [FromServices] BaseRepository<Detail> repoDetail, [FromServices] SongRepository repoSong2,
 | 
				
			||||||
           [FromServices] SongService serviceSong)
 | 
					           [FromServices] SongService serviceSong)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            await serviceSong.Test2();
 | 
					            await serviceSong.Test2();
 | 
				
			||||||
@@ -77,7 +73,7 @@ namespace aspnetcore_transaction.Controllers
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Transactional(Propagation = Propagation.Nested)] //sqlite 不能嵌套事务,会锁库的
 | 
					        [Transactional(Propagation = Propagation.Nested)] //sqlite 不能嵌套事务,会锁库的
 | 
				
			||||||
        async public Task Test2()
 | 
					        public async Task Test2()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            await _repoSong.InsertAsync(new Song());
 | 
					            await _repoSong.InsertAsync(new Song());
 | 
				
			||||||
            await _repoDetail.InsertAsync(new Detail());
 | 
					            await _repoDetail.InsertAsync(new Detail());
 | 
				
			||||||
@@ -85,7 +81,7 @@ namespace aspnetcore_transaction.Controllers
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Transactional(Propagation = Propagation.Nested)] //sqlite 不能嵌套事务,会锁库的
 | 
					        [Transactional(Propagation = Propagation.Nested)] //sqlite 不能嵌套事务,会锁库的
 | 
				
			||||||
        async public Task<object> Test3()
 | 
					        public async Task<object> Test3()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            await _repoSong.InsertAsync(new Song());
 | 
					            await _repoSong.InsertAsync(new Song());
 | 
				
			||||||
            await _repoDetail.InsertAsync(new Detail());
 | 
					            await _repoDetail.InsertAsync(new Detail());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,5 @@
 | 
				
			|||||||
using System;
 | 
					using Microsoft.AspNetCore.Hosting;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using System.Threading.Tasks;
 | 
					 | 
				
			||||||
using Microsoft.AspNetCore.Hosting;
 | 
					 | 
				
			||||||
using Microsoft.Extensions.Configuration;
 | 
					 | 
				
			||||||
using Microsoft.Extensions.Hosting;
 | 
					using Microsoft.Extensions.Hosting;
 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace aspnetcore_transaction
 | 
					namespace aspnetcore_transaction
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,19 +1,12 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Diagnostics;
 | 
					using System.Diagnostics;
 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using System.Text;
 | 
					using System.Text;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					 | 
				
			||||||
using aspnetcore_transaction.Controllers;
 | 
					using aspnetcore_transaction.Controllers;
 | 
				
			||||||
using FreeSql;
 | 
					using FreeSql;
 | 
				
			||||||
using Microsoft.AspNetCore.Builder;
 | 
					using Microsoft.AspNetCore.Builder;
 | 
				
			||||||
using Microsoft.AspNetCore.Hosting;
 | 
					using Microsoft.AspNetCore.Hosting;
 | 
				
			||||||
using Microsoft.AspNetCore.HttpsPolicy;
 | 
					 | 
				
			||||||
using Microsoft.AspNetCore.Mvc;
 | 
					 | 
				
			||||||
using Microsoft.Extensions.Configuration;
 | 
					using Microsoft.Extensions.Configuration;
 | 
				
			||||||
using Microsoft.Extensions.DependencyInjection;
 | 
					using Microsoft.Extensions.DependencyInjection;
 | 
				
			||||||
using Microsoft.Extensions.Hosting;
 | 
					 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace aspnetcore_transaction
 | 
					namespace aspnetcore_transaction
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -22,7 +15,7 @@ namespace aspnetcore_transaction
 | 
				
			|||||||
        public Startup(IConfiguration configuration)
 | 
					        public Startup(IConfiguration configuration)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            Configuration = configuration;
 | 
					            Configuration = configuration;
 | 
				
			||||||
            Fsql = new FreeSql.FreeSqlBuilder()
 | 
					            Fsql = new FreeSqlBuilder()
 | 
				
			||||||
                 .UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=|DataDirectory|\test_trans.db")
 | 
					                 .UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=|DataDirectory|\test_trans.db")
 | 
				
			||||||
                 .UseAutoSyncStructure(true)
 | 
					                 .UseAutoSyncStructure(true)
 | 
				
			||||||
                 .UseMonitorCommand(cmd => Trace.WriteLine(cmd.CommandText))
 | 
					                 .UseMonitorCommand(cmd => Trace.WriteLine(cmd.CommandText))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,13 +1,8 @@
 | 
				
			|||||||
using FreeSql;
 | 
					using System;
 | 
				
			||||||
using Microsoft.AspNetCore.Mvc.Filters;
 | 
					 | 
				
			||||||
using Rougamo.Context;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Data;
 | 
					using System.Data;
 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using System.Text;
 | 
					 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Rougamo.Context;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FreeSql
 | 
					namespace FreeSql
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,4 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using FreeSql;
 | 
					using FreeSql;
 | 
				
			||||||
@@ -12,9 +11,9 @@ namespace dbcontext_01.Controllers
 | 
				
			|||||||
    public class ValuesController : ControllerBase
 | 
					    public class ValuesController : ControllerBase
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        IFreeSql _orm;
 | 
					        private readonly IFreeSql _orm;
 | 
				
			||||||
        SongContext _songContext;
 | 
					        private readonly SongContext _songContext;
 | 
				
			||||||
        CurdAfterLog _curdLog;
 | 
					        private readonly CurdAfterLog _curdLog;
 | 
				
			||||||
        public ValuesController(SongContext songContext, IFreeSql orm1, CurdAfterLog curdLog)
 | 
					        public ValuesController(SongContext songContext, IFreeSql orm1, CurdAfterLog curdLog)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _songContext = songContext;
 | 
					            _songContext = songContext;
 | 
				
			||||||
@@ -25,10 +24,12 @@ namespace dbcontext_01.Controllers
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // GET api/values
 | 
					        // GET api/values
 | 
				
			||||||
        [HttpGet]
 | 
					        [HttpGet]
 | 
				
			||||||
        async public Task<string> Get()
 | 
					        public async Task<string> Get()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _orm.SetDbContextOptions(opt => {
 | 
					            _orm.SetDbContextOptions(opt =>
 | 
				
			||||||
                opt.OnEntityChange = changeReport => {
 | 
					            {
 | 
				
			||||||
 | 
					                opt.OnEntityChange = changeReport =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
                    Console.WriteLine(changeReport);
 | 
					                    Console.WriteLine(changeReport);
 | 
				
			||||||
                };
 | 
					                };
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,14 +13,14 @@ namespace FreeSql
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    partial class DbContext
 | 
					    partial class DbContext
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        async public virtual Task<int> SaveChangesAsync(CancellationToken cancellationToken = default)
 | 
					        public virtual async Task<int> SaveChangesAsync(CancellationToken cancellationToken = default)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            await FlushCommandAsync(cancellationToken);
 | 
					            await FlushCommandAsync(cancellationToken);
 | 
				
			||||||
            return SaveChangesSuccess();
 | 
					            return SaveChangesSuccess();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        static ConcurrentDictionary<Type, ConcurrentDictionary<string, Func<object, object[], CancellationToken, Task<int>>>> _dicFlushCommandDbSetBatchAsync = new ConcurrentDictionary<Type, ConcurrentDictionary<string, Func<object, object[], CancellationToken, Task<int>>>>();
 | 
					        static ConcurrentDictionary<Type, ConcurrentDictionary<string, Func<object, object[], CancellationToken, Task<int>>>> _dicFlushCommandDbSetBatchAsync = new ConcurrentDictionary<Type, ConcurrentDictionary<string, Func<object, object[], CancellationToken, Task<int>>>>();
 | 
				
			||||||
        async internal Task FlushCommandAsync(CancellationToken cancellationToken)
 | 
					        internal async Task FlushCommandAsync(CancellationToken cancellationToken)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (isFlushCommanding) return;
 | 
					            if (isFlushCommanding) return;
 | 
				
			||||||
            if (_prevCommands.Any() == false) return;
 | 
					            if (_prevCommands.Any() == false) return;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,4 @@
 | 
				
			|||||||
using System;
 | 
					using FreeSql.DataAnnotations;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq.Expressions;
 | 
					 | 
				
			||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FreeSql.Extensions.EfCoreFluentApi
 | 
					namespace FreeSql.Extensions.EfCoreFluentApi
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -82,7 +82,7 @@ namespace FreeSql
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
#if net40
 | 
					#if net40
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
        async public override Task<int> SaveChangesAsync(CancellationToken cancellationToken = default)
 | 
					        public override async Task<int> SaveChangesAsync(CancellationToken cancellationToken = default)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            await FlushCommandAsync(cancellationToken);
 | 
					            await FlushCommandAsync(cancellationToken);
 | 
				
			||||||
            return SaveChangesSuccess();
 | 
					            return SaveChangesSuccess();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -103,7 +103,7 @@ namespace FreeSql
 | 
				
			|||||||
            _dbset.RemoveRange(entitys);
 | 
					            _dbset.RemoveRange(entitys);
 | 
				
			||||||
            return _db.SaveChanges();
 | 
					            return _db.SaveChanges();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        public List<object> DeleteCascadeByDatabase(Expression<Func<TEntity, bool>> predicate)
 | 
					        public virtual List<object> DeleteCascadeByDatabase(Expression<Func<TEntity, bool>> predicate)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var list = _dbset.RemoveCascadeByDatabase(predicate);
 | 
					            var list = _dbset.RemoveCascadeByDatabase(predicate);
 | 
				
			||||||
            var affrows = _db.SaveChanges();
 | 
					            var affrows = _db.SaveChanges();
 | 
				
			||||||
@@ -151,14 +151,14 @@ namespace FreeSql
 | 
				
			|||||||
            return entity;
 | 
					            return entity;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void SaveMany(TEntity entity, string propertyName)
 | 
					        public virtual void SaveMany(TEntity entity, string propertyName)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _dbset.SaveMany(entity, propertyName);
 | 
					            _dbset.SaveMany(entity, propertyName);
 | 
				
			||||||
            _db.SaveChanges();
 | 
					            _db.SaveChanges();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void BeginEdit(List<TEntity> data) => _dbset.BeginEdit(data);
 | 
					        public virtual void BeginEdit(List<TEntity> data) => _dbset.BeginEdit(data);
 | 
				
			||||||
        public int EndEdit(List<TEntity> data = null)
 | 
					        public virtual int EndEdit(List<TEntity> data = null)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _db.FlushCommand();
 | 
					            _db.FlushCommand();
 | 
				
			||||||
            if (UnitOfWork?.GetOrBeginTransaction(true) == null && _db.OrmOriginal.Ado.TransactionCurrentThread == null)
 | 
					            if (UnitOfWork?.GetOrBeginTransaction(true) == null && _db.OrmOriginal.Ado.TransactionCurrentThread == null)
 | 
				
			||||||
@@ -206,6 +206,6 @@ namespace FreeSql
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        public virtual int Delete(TKey id) => Delete(CheckTKeyAndReturnIdEntity(id));
 | 
					        public virtual int Delete(TKey id) => Delete(CheckTKeyAndReturnIdEntity(id));
 | 
				
			||||||
        public virtual TEntity Find(TKey id) => _dbset.OrmSelectInternal(CheckTKeyAndReturnIdEntity(id)).ToOne();
 | 
					        public virtual TEntity Find(TKey id) => _dbset.OrmSelectInternal(CheckTKeyAndReturnIdEntity(id)).ToOne();
 | 
				
			||||||
        public TEntity Get(TKey id) => _dbset.OrmSelectInternal(CheckTKeyAndReturnIdEntity(id)).ToOne();
 | 
					        public virtual TEntity Get(TKey id) => _dbset.OrmSelectInternal(CheckTKeyAndReturnIdEntity(id)).ToOne();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,4 @@
 | 
				
			|||||||
using FreeSql.Extensions.EntityUtil;
 | 
					using System;
 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Linq.Expressions;
 | 
					using System.Linq.Expressions;
 | 
				
			||||||
@@ -14,7 +13,7 @@ namespace FreeSql
 | 
				
			|||||||
        where TEntity : class
 | 
					        where TEntity : class
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        async virtual public Task<int> DeleteAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default)
 | 
					        public virtual async Task<int> DeleteAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var delete = _dbset.OrmDeleteInternal(null).Where(predicate);
 | 
					            var delete = _dbset.OrmDeleteInternal(null).Where(predicate);
 | 
				
			||||||
            var sql = delete.ToSql();
 | 
					            var sql = delete.ToSql();
 | 
				
			||||||
@@ -32,20 +31,20 @@ namespace FreeSql
 | 
				
			|||||||
            _dbset.RemoveRange(entitys);
 | 
					            _dbset.RemoveRange(entitys);
 | 
				
			||||||
            return _db.SaveChangesAsync(cancellationToken);
 | 
					            return _db.SaveChangesAsync(cancellationToken);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        async public virtual Task<List<object>> DeleteCascadeByDatabaseAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default)
 | 
					        public virtual async Task<List<object>> DeleteCascadeByDatabaseAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var list = await _dbset.RemoveCascadeByDatabaseAsync(predicate, cancellationToken);
 | 
					            var list = await _dbset.RemoveCascadeByDatabaseAsync(predicate, cancellationToken);
 | 
				
			||||||
            var affrows = await _db.SaveChangesAsync(cancellationToken);
 | 
					            var affrows = await _db.SaveChangesAsync(cancellationToken);
 | 
				
			||||||
            return list;
 | 
					            return list;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        async public virtual Task<TEntity> InsertAsync(TEntity entity, CancellationToken cancellationToken = default)
 | 
					        public virtual async Task<TEntity> InsertAsync(TEntity entity, CancellationToken cancellationToken = default)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            await _dbset.AddAsync(entity, cancellationToken);
 | 
					            await _dbset.AddAsync(entity, cancellationToken);
 | 
				
			||||||
            await _db.SaveChangesAsync(cancellationToken);
 | 
					            await _db.SaveChangesAsync(cancellationToken);
 | 
				
			||||||
            return entity;
 | 
					            return entity;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        async public virtual Task<List<TEntity>> InsertAsync(IEnumerable<TEntity> entitys, CancellationToken cancellationToken = default)
 | 
					        public virtual async Task<List<TEntity>> InsertAsync(IEnumerable<TEntity> entitys, CancellationToken cancellationToken = default)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            await _dbset.AddRangeAsync(entitys, cancellationToken);
 | 
					            await _dbset.AddRangeAsync(entitys, cancellationToken);
 | 
				
			||||||
            await _db.SaveChangesAsync(cancellationToken);
 | 
					            await _db.SaveChangesAsync(cancellationToken);
 | 
				
			||||||
@@ -63,14 +62,14 @@ namespace FreeSql
 | 
				
			|||||||
            return _db.SaveChangesAsync(cancellationToken);
 | 
					            return _db.SaveChangesAsync(cancellationToken);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        async public virtual Task<TEntity> InsertOrUpdateAsync(TEntity entity, CancellationToken cancellationToken = default)
 | 
					        public virtual async Task<TEntity> InsertOrUpdateAsync(TEntity entity, CancellationToken cancellationToken = default)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            await _dbset.AddOrUpdateAsync(entity, cancellationToken);
 | 
					            await _dbset.AddOrUpdateAsync(entity, cancellationToken);
 | 
				
			||||||
            await _db.SaveChangesAsync(cancellationToken);
 | 
					            await _db.SaveChangesAsync(cancellationToken);
 | 
				
			||||||
            return entity;
 | 
					            return entity;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        async public Task SaveManyAsync(TEntity entity, string propertyName, CancellationToken cancellationToken = default)
 | 
					        public virtual async Task SaveManyAsync(TEntity entity, string propertyName, CancellationToken cancellationToken = default)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            await _dbset.SaveManyAsync(entity, propertyName, cancellationToken);
 | 
					            await _dbset.SaveManyAsync(entity, propertyName, cancellationToken);
 | 
				
			||||||
            await _db.SaveChangesAsync(cancellationToken);
 | 
					            await _db.SaveChangesAsync(cancellationToken);
 | 
				
			||||||
@@ -81,7 +80,7 @@ namespace FreeSql
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        public virtual Task<int> DeleteAsync(TKey id, CancellationToken cancellationToken = default) => DeleteAsync(CheckTKeyAndReturnIdEntity(id), cancellationToken);
 | 
					        public virtual Task<int> DeleteAsync(TKey id, CancellationToken cancellationToken = default) => DeleteAsync(CheckTKeyAndReturnIdEntity(id), cancellationToken);
 | 
				
			||||||
        public virtual Task<TEntity> FindAsync(TKey id, CancellationToken cancellationToken = default) => _dbset.OrmSelectInternal(CheckTKeyAndReturnIdEntity(id)).ToOneAsync(cancellationToken);
 | 
					        public virtual Task<TEntity> FindAsync(TKey id, CancellationToken cancellationToken = default) => _dbset.OrmSelectInternal(CheckTKeyAndReturnIdEntity(id)).ToOneAsync(cancellationToken);
 | 
				
			||||||
        public Task<TEntity> GetAsync(TKey id, CancellationToken cancellationToken = default) => _dbset.OrmSelectInternal(CheckTKeyAndReturnIdEntity(id)).ToOneAsync(cancellationToken);
 | 
					        public virtual Task<TEntity> GetAsync(TKey id, CancellationToken cancellationToken = default) => _dbset.OrmSelectInternal(CheckTKeyAndReturnIdEntity(id)).ToOneAsync(cancellationToken);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		Reference in New Issue
	
	Block a user