mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
- 优化 IUpdate ToSql;
This commit is contained in:
parent
3f77ea3a63
commit
0e82d6c3e3
@ -800,14 +800,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>
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
@ -12,180 +14,196 @@ namespace FreeSql.Tests
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void DeleteCascade()
|
public void DeleteCascade()
|
||||||
{
|
{
|
||||||
var fsql = g.sqlite;
|
using (var fsql = new FreeSqlBuilder()
|
||||||
fsql.Delete<DeleteCascadeUserGroup>().Where("1=1").ExecuteAffrows();
|
.UseConnectionString(DataType.Sqlite, "data source=:memory:")
|
||||||
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
.UseAutoSyncStructure(true)
|
||||||
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
.UseNoneCommandParameter(true)
|
||||||
fsql.Delete<DeleteCascadeUserTag>().Where("1=1").ExecuteAffrows();
|
.UseMonitorCommand(cmd => Trace.WriteLine(cmd.CommandText))
|
||||||
fsql.Delete<DeleteCascadeTag>().Where("1=1").ExecuteAffrows();
|
.Build())
|
||||||
|
|
||||||
var groupRepo = fsql.GetRepository<DeleteCascadeUserGroup>();
|
|
||||||
var userRepo = fsql.GetRepository<DeleteCascadeUser>();
|
|
||||||
var userextRepo = fsql.GetRepository<DeleteCascadeUserExt>();
|
|
||||||
var tagRepo = fsql.GetRepository<DeleteCascadeTag>();
|
|
||||||
groupRepo.DbContextOptions.EnableCascadeSave = true;
|
|
||||||
userRepo.DbContextOptions.EnableCascadeSave = true;
|
|
||||||
userextRepo.DbContextOptions.EnableCascadeSave = true;
|
|
||||||
tagRepo.DbContextOptions.EnableCascadeSave = true;
|
|
||||||
|
|
||||||
//OneToOne InDatabase
|
|
||||||
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
|
||||||
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
|
||||||
var user = new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" } };
|
|
||||||
userRepo.Insert(user);
|
|
||||||
var ret = userRepo.DeleteCascadeByDatabase(a => a.Id == user.Id);
|
|
||||||
Assert.Equal(2, ret.Count);
|
|
||||||
Assert.IsType<DeleteCascadeUserExt>(ret[0]);
|
|
||||||
Assert.Equal(user.UserExt.UserId, (ret[0] as DeleteCascadeUserExt).UserId);
|
|
||||||
Assert.Equal(user.UserExt.Remark, (ret[0] as DeleteCascadeUserExt).Remark);
|
|
||||||
Assert.IsType<DeleteCascadeUser>(ret[1]);
|
|
||||||
Assert.Equal(user.Id, (ret[1] as DeleteCascadeUser).Id);
|
|
||||||
Assert.Equal(user.Username, (ret[1] as DeleteCascadeUser).Username);
|
|
||||||
Assert.Equal(user.Password, (ret[1] as DeleteCascadeUser).Password);
|
|
||||||
//OneToOne EnableCascadeSave InMemory
|
|
||||||
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
|
||||||
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
|
||||||
user = new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" } };
|
|
||||||
userRepo.Insert(user);
|
|
||||||
Assert.True(user.Id > 0);
|
|
||||||
Assert.True(user.UserExt.UserId > 0);
|
|
||||||
var affrows = userRepo.Delete(user);
|
|
||||||
Assert.Equal(2, affrows);
|
|
||||||
Assert.Equal(0, user.Id);
|
|
||||||
Assert.Equal("admin01", user.Username);
|
|
||||||
Assert.Equal("pwd01", user.Password);
|
|
||||||
Assert.True(user.UserExt.UserId > 0);
|
|
||||||
Assert.Equal("用户备注01", user.UserExt.Remark);
|
|
||||||
Assert.False(userRepo.Select.Any());
|
|
||||||
Assert.False(userextRepo.Select.Any());
|
|
||||||
|
|
||||||
//OneToOne InDatabase 先删除 UserExt
|
|
||||||
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
|
||||||
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
|
||||||
user = new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" } };
|
|
||||||
userRepo.Insert(user);
|
|
||||||
ret = userextRepo.DeleteCascadeByDatabase(a => a.UserId == user.UserExt.UserId);
|
|
||||||
Assert.Equal(2, ret.Count);
|
|
||||||
Assert.IsType<DeleteCascadeUserExt>(ret[1]);
|
|
||||||
Assert.Equal(user.UserExt.UserId, (ret[1] as DeleteCascadeUserExt).UserId);
|
|
||||||
Assert.Equal(user.UserExt.Remark, (ret[1] as DeleteCascadeUserExt).Remark);
|
|
||||||
Assert.IsType<DeleteCascadeUser>(ret[0]);
|
|
||||||
Assert.Equal(user.Id, (ret[0] as DeleteCascadeUser).Id);
|
|
||||||
Assert.Equal(user.Username, (ret[0] as DeleteCascadeUser).Username);
|
|
||||||
Assert.Equal(user.Password, (ret[0] as DeleteCascadeUser).Password);
|
|
||||||
//OneToOne EnableCascadeSave InMemory 先删除 UserExt
|
|
||||||
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
|
||||||
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
|
||||||
user = new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" } };
|
|
||||||
userRepo.Insert(user);
|
|
||||||
Assert.True(user.Id > 0);
|
|
||||||
Assert.True(user.UserExt.UserId > 0);
|
|
||||||
var userext = userextRepo.Where(a => a.UserId == user.Id).Include(a => a.User).First();
|
|
||||||
Assert.NotNull(userext);
|
|
||||||
Assert.Equal(user.UserExt.UserId, userext.UserId);
|
|
||||||
Assert.Equal(user.Id, userext.User.Id);
|
|
||||||
affrows = userextRepo.Delete(userext);
|
|
||||||
Assert.Equal(2, affrows);
|
|
||||||
Assert.Equal(0, userext.User.Id);
|
|
||||||
Assert.Equal("admin01", userext.User.Username);
|
|
||||||
Assert.Equal("pwd01", userext.User.Password);
|
|
||||||
Assert.True(userext.UserId > 0);
|
|
||||||
Assert.Equal("用户备注01", userext.Remark);
|
|
||||||
Assert.False(userRepo.Select.Any());
|
|
||||||
Assert.False(userextRepo.Select.Any());
|
|
||||||
|
|
||||||
//OneToMany InDatabase
|
|
||||||
fsql.Delete<DeleteCascadeUserGroup>().Where("1=1").ExecuteAffrows();
|
|
||||||
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
|
||||||
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
|
||||||
var group = new DeleteCascadeUserGroup
|
|
||||||
{
|
{
|
||||||
GroupName = "group01",
|
fsql.CodeFirst.GetTableByEntity(typeof(DeleteCascadeUserGroup)).ColumnsByCs
|
||||||
Users = new List<DeleteCascadeUser>
|
.Where(a => !new[] { typeof(string), typeof(int), typeof(DateTime), typeof(long) }.Contains(a.Value.Attribute.MapType))
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
fsql.GlobalFilter.Apply<DeleteCascadeUserGroup>("soft_delete", a => a.IsDeleted == false);
|
||||||
|
|
||||||
|
fsql.Delete<DeleteCascadeUserGroup>().Where("1=1").ExecuteAffrows();
|
||||||
|
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
||||||
|
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
||||||
|
fsql.Delete<DeleteCascadeUserTag>().Where("1=1").ExecuteAffrows();
|
||||||
|
fsql.Delete<DeleteCascadeTag>().Where("1=1").ExecuteAffrows();
|
||||||
|
|
||||||
|
var groupRepo = fsql.GetRepository<DeleteCascadeUserGroup>();
|
||||||
|
var userRepo = fsql.GetRepository<DeleteCascadeUser>();
|
||||||
|
var userextRepo = fsql.GetRepository<DeleteCascadeUserExt>();
|
||||||
|
var tagRepo = fsql.GetRepository<DeleteCascadeTag>();
|
||||||
|
groupRepo.DbContextOptions.EnableCascadeSave = true;
|
||||||
|
userRepo.DbContextOptions.EnableCascadeSave = true;
|
||||||
|
userextRepo.DbContextOptions.EnableCascadeSave = true;
|
||||||
|
tagRepo.DbContextOptions.EnableCascadeSave = true;
|
||||||
|
groupRepo.DbContextOptions.EnableGlobalFilter = false;
|
||||||
|
userRepo.DbContextOptions.EnableGlobalFilter = false;
|
||||||
|
userextRepo.DbContextOptions.EnableGlobalFilter = false;
|
||||||
|
tagRepo.DbContextOptions.EnableGlobalFilter = false;
|
||||||
|
|
||||||
|
//OneToOne InDatabase
|
||||||
|
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
||||||
|
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
||||||
|
var user = new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" } };
|
||||||
|
userRepo.Insert(user);
|
||||||
|
var ret = userRepo.DeleteCascadeByDatabase(a => a.Id == user.Id);
|
||||||
|
Assert.Equal(2, ret.Count);
|
||||||
|
Assert.IsType<DeleteCascadeUserExt>(ret[0]);
|
||||||
|
Assert.Equal(user.UserExt.UserId, (ret[0] as DeleteCascadeUserExt).UserId);
|
||||||
|
Assert.Equal(user.UserExt.Remark, (ret[0] as DeleteCascadeUserExt).Remark);
|
||||||
|
Assert.IsType<DeleteCascadeUser>(ret[1]);
|
||||||
|
Assert.Equal(user.Id, (ret[1] as DeleteCascadeUser).Id);
|
||||||
|
Assert.Equal(user.Username, (ret[1] as DeleteCascadeUser).Username);
|
||||||
|
Assert.Equal(user.Password, (ret[1] as DeleteCascadeUser).Password);
|
||||||
|
//OneToOne EnableCascadeSave InMemory
|
||||||
|
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
||||||
|
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
||||||
|
user = new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" } };
|
||||||
|
userRepo.Insert(user);
|
||||||
|
Assert.True(user.Id > 0);
|
||||||
|
Assert.True(user.UserExt.UserId > 0);
|
||||||
|
var affrows = userRepo.Delete(user);
|
||||||
|
Assert.Equal(2, affrows);
|
||||||
|
Assert.Equal(0, user.Id);
|
||||||
|
Assert.Equal("admin01", user.Username);
|
||||||
|
Assert.Equal("pwd01", user.Password);
|
||||||
|
Assert.True(user.UserExt.UserId > 0);
|
||||||
|
Assert.Equal("用户备注01", user.UserExt.Remark);
|
||||||
|
Assert.False(userRepo.Select.Any());
|
||||||
|
Assert.False(userextRepo.Select.Any());
|
||||||
|
|
||||||
|
//OneToOne InDatabase 先删除 UserExt
|
||||||
|
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
||||||
|
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
||||||
|
user = new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" } };
|
||||||
|
userRepo.Insert(user);
|
||||||
|
ret = userextRepo.DeleteCascadeByDatabase(a => a.UserId == user.UserExt.UserId);
|
||||||
|
Assert.Equal(2, ret.Count);
|
||||||
|
Assert.IsType<DeleteCascadeUserExt>(ret[1]);
|
||||||
|
Assert.Equal(user.UserExt.UserId, (ret[1] as DeleteCascadeUserExt).UserId);
|
||||||
|
Assert.Equal(user.UserExt.Remark, (ret[1] as DeleteCascadeUserExt).Remark);
|
||||||
|
Assert.IsType<DeleteCascadeUser>(ret[0]);
|
||||||
|
Assert.Equal(user.Id, (ret[0] as DeleteCascadeUser).Id);
|
||||||
|
Assert.Equal(user.Username, (ret[0] as DeleteCascadeUser).Username);
|
||||||
|
Assert.Equal(user.Password, (ret[0] as DeleteCascadeUser).Password);
|
||||||
|
//OneToOne EnableCascadeSave InMemory 先删除 UserExt
|
||||||
|
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
||||||
|
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
||||||
|
user = new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" } };
|
||||||
|
userRepo.Insert(user);
|
||||||
|
Assert.True(user.Id > 0);
|
||||||
|
Assert.True(user.UserExt.UserId > 0);
|
||||||
|
var userext = userextRepo.Where(a => a.UserId == user.Id).Include(a => a.User).First();
|
||||||
|
Assert.NotNull(userext);
|
||||||
|
Assert.Equal(user.UserExt.UserId, userext.UserId);
|
||||||
|
Assert.Equal(user.Id, userext.User.Id);
|
||||||
|
affrows = userextRepo.Delete(userext);
|
||||||
|
Assert.Equal(2, affrows);
|
||||||
|
Assert.Equal(0, userext.User.Id);
|
||||||
|
Assert.Equal("admin01", userext.User.Username);
|
||||||
|
Assert.Equal("pwd01", userext.User.Password);
|
||||||
|
Assert.True(userext.UserId > 0);
|
||||||
|
Assert.Equal("用户备注01", userext.Remark);
|
||||||
|
Assert.False(userRepo.Select.Any());
|
||||||
|
Assert.False(userextRepo.Select.Any());
|
||||||
|
|
||||||
|
//OneToMany InDatabase
|
||||||
|
fsql.Delete<DeleteCascadeUserGroup>().Where("1=1").ExecuteAffrows();
|
||||||
|
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
||||||
|
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
||||||
|
var group = new DeleteCascadeUserGroup
|
||||||
|
{
|
||||||
|
GroupName = "group01",
|
||||||
|
Users = new List<DeleteCascadeUser>
|
||||||
{
|
{
|
||||||
new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" } },
|
new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" } },
|
||||||
new DeleteCascadeUser { Username = "admin02", Password = "pwd02", UserExt = new DeleteCascadeUserExt { Remark = "用户备注02" } },
|
new DeleteCascadeUser { Username = "admin02", Password = "pwd02", UserExt = new DeleteCascadeUserExt { Remark = "用户备注02" } },
|
||||||
new DeleteCascadeUser { Username = "admin03", Password = "pwd03", UserExt = new DeleteCascadeUserExt { Remark = "用户备注03" } },
|
new DeleteCascadeUser { Username = "admin03", Password = "pwd03", UserExt = new DeleteCascadeUserExt { Remark = "用户备注03" } },
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
groupRepo.Insert(group);
|
groupRepo.Insert(group);
|
||||||
Assert.Equal(group.Id, group.Users[0].GroupId);
|
Assert.Equal(group.Id, group.Users[0].GroupId);
|
||||||
Assert.Equal(group.Id, group.Users[1].GroupId);
|
Assert.Equal(group.Id, group.Users[1].GroupId);
|
||||||
Assert.Equal(group.Id, group.Users[2].GroupId);
|
Assert.Equal(group.Id, group.Users[2].GroupId);
|
||||||
ret = groupRepo.DeleteCascadeByDatabase(a => a.Id == group.Id);
|
ret = groupRepo.DeleteCascadeByDatabase(a => a.Id == group.Id);
|
||||||
Assert.Equal(7, ret.Count);
|
Assert.Equal(7, ret.Count);
|
||||||
Assert.IsType<DeleteCascadeUserExt>(ret[0]);
|
Assert.IsType<DeleteCascadeUserExt>(ret[0]);
|
||||||
Assert.Equal(group.Users[0].UserExt.UserId, (ret[0] as DeleteCascadeUserExt).UserId);
|
Assert.Equal(group.Users[0].UserExt.UserId, (ret[0] as DeleteCascadeUserExt).UserId);
|
||||||
Assert.Equal(group.Users[0].UserExt.Remark, (ret[0] as DeleteCascadeUserExt).Remark);
|
Assert.Equal(group.Users[0].UserExt.Remark, (ret[0] as DeleteCascadeUserExt).Remark);
|
||||||
Assert.IsType<DeleteCascadeUserExt>(ret[1]);
|
Assert.IsType<DeleteCascadeUserExt>(ret[1]);
|
||||||
Assert.Equal(group.Users[1].UserExt.UserId, (ret[1] as DeleteCascadeUserExt).UserId);
|
Assert.Equal(group.Users[1].UserExt.UserId, (ret[1] as DeleteCascadeUserExt).UserId);
|
||||||
Assert.Equal(group.Users[1].UserExt.Remark, (ret[1] as DeleteCascadeUserExt).Remark);
|
Assert.Equal(group.Users[1].UserExt.Remark, (ret[1] as DeleteCascadeUserExt).Remark);
|
||||||
Assert.IsType<DeleteCascadeUserExt>(ret[2]);
|
Assert.IsType<DeleteCascadeUserExt>(ret[2]);
|
||||||
Assert.Equal(group.Users[2].UserExt.UserId, (ret[2] as DeleteCascadeUserExt).UserId);
|
Assert.Equal(group.Users[2].UserExt.UserId, (ret[2] as DeleteCascadeUserExt).UserId);
|
||||||
Assert.Equal(group.Users[2].UserExt.Remark, (ret[2] as DeleteCascadeUserExt).Remark);
|
Assert.Equal(group.Users[2].UserExt.Remark, (ret[2] as DeleteCascadeUserExt).Remark);
|
||||||
Assert.IsType<DeleteCascadeUser>(ret[3]);
|
Assert.IsType<DeleteCascadeUser>(ret[3]);
|
||||||
Assert.Equal(group.Users[0].Id, (ret[3] as DeleteCascadeUser).Id);
|
Assert.Equal(group.Users[0].Id, (ret[3] as DeleteCascadeUser).Id);
|
||||||
Assert.Equal(group.Users[0].Username, (ret[3] as DeleteCascadeUser).Username);
|
Assert.Equal(group.Users[0].Username, (ret[3] as DeleteCascadeUser).Username);
|
||||||
Assert.Equal(group.Users[0].Password, (ret[3] as DeleteCascadeUser).Password);
|
Assert.Equal(group.Users[0].Password, (ret[3] as DeleteCascadeUser).Password);
|
||||||
Assert.IsType<DeleteCascadeUser>(ret[4]);
|
Assert.IsType<DeleteCascadeUser>(ret[4]);
|
||||||
Assert.Equal(group.Users[1].Id, (ret[4] as DeleteCascadeUser).Id);
|
Assert.Equal(group.Users[1].Id, (ret[4] as DeleteCascadeUser).Id);
|
||||||
Assert.Equal(group.Users[1].Username, (ret[4] as DeleteCascadeUser).Username);
|
Assert.Equal(group.Users[1].Username, (ret[4] as DeleteCascadeUser).Username);
|
||||||
Assert.Equal(group.Users[1].Password, (ret[4] as DeleteCascadeUser).Password);
|
Assert.Equal(group.Users[1].Password, (ret[4] as DeleteCascadeUser).Password);
|
||||||
Assert.IsType<DeleteCascadeUser>(ret[5]);
|
Assert.IsType<DeleteCascadeUser>(ret[5]);
|
||||||
Assert.Equal(group.Users[2].Id, (ret[5] as DeleteCascadeUser).Id);
|
Assert.Equal(group.Users[2].Id, (ret[5] as DeleteCascadeUser).Id);
|
||||||
Assert.Equal(group.Users[2].Username, (ret[5] as DeleteCascadeUser).Username);
|
Assert.Equal(group.Users[2].Username, (ret[5] as DeleteCascadeUser).Username);
|
||||||
Assert.Equal(group.Users[2].Password, (ret[5] as DeleteCascadeUser).Password);
|
Assert.Equal(group.Users[2].Password, (ret[5] as DeleteCascadeUser).Password);
|
||||||
Assert.IsType<DeleteCascadeUserGroup>(ret[6]);
|
Assert.IsType<DeleteCascadeUserGroup>(ret[6]);
|
||||||
Assert.Equal(group.Id, (ret[6] as DeleteCascadeUserGroup).Id);
|
Assert.Equal(group.Id, (ret[6] as DeleteCascadeUserGroup).Id);
|
||||||
Assert.Equal(group.GroupName, (ret[6] as DeleteCascadeUserGroup).GroupName);
|
Assert.Equal(group.GroupName, (ret[6] as DeleteCascadeUserGroup).GroupName);
|
||||||
//OneToMany EnableCascadeSave InMemory
|
//OneToMany EnableCascadeSave InMemory
|
||||||
fsql.Delete<DeleteCascadeUserGroup>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<DeleteCascadeUserGroup>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
||||||
group = new DeleteCascadeUserGroup
|
group = new DeleteCascadeUserGroup
|
||||||
{
|
{
|
||||||
GroupName = "group01",
|
GroupName = "group01",
|
||||||
Users = new List<DeleteCascadeUser>
|
Users = new List<DeleteCascadeUser>
|
||||||
{
|
{
|
||||||
new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" } },
|
new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" } },
|
||||||
new DeleteCascadeUser { Username = "admin02", Password = "pwd02", UserExt = new DeleteCascadeUserExt { Remark = "用户备注02" } },
|
new DeleteCascadeUser { Username = "admin02", Password = "pwd02", UserExt = new DeleteCascadeUserExt { Remark = "用户备注02" } },
|
||||||
new DeleteCascadeUser { Username = "admin03", Password = "pwd03", UserExt = new DeleteCascadeUserExt { Remark = "用户备注03" } },
|
new DeleteCascadeUser { Username = "admin03", Password = "pwd03", UserExt = new DeleteCascadeUserExt { Remark = "用户备注03" } },
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
groupRepo.Insert(group);
|
groupRepo.Insert(group);
|
||||||
Assert.Equal(group.Id, group.Users[0].GroupId);
|
Assert.Equal(group.Id, group.Users[0].GroupId);
|
||||||
Assert.Equal(group.Id, group.Users[1].GroupId);
|
Assert.Equal(group.Id, group.Users[1].GroupId);
|
||||||
Assert.Equal(group.Id, group.Users[2].GroupId);
|
Assert.Equal(group.Id, group.Users[2].GroupId);
|
||||||
affrows = groupRepo.Delete(group);
|
affrows = groupRepo.Delete(group);
|
||||||
Assert.Equal(7, affrows);
|
Assert.Equal(7, affrows);
|
||||||
Assert.Equal(0, group.Id);
|
Assert.Equal(0, group.Id);
|
||||||
Assert.Equal("group01", group.GroupName);
|
Assert.Equal("group01", group.GroupName);
|
||||||
Assert.Equal(0, group.Users[0].Id);
|
Assert.Equal(0, group.Users[0].Id);
|
||||||
Assert.Equal("admin01", group.Users[0].Username);
|
Assert.Equal("admin01", group.Users[0].Username);
|
||||||
Assert.Equal("pwd01", group.Users[0].Password);
|
Assert.Equal("pwd01", group.Users[0].Password);
|
||||||
Assert.True(group.Users[0].UserExt.UserId > 0);
|
Assert.True(group.Users[0].UserExt.UserId > 0);
|
||||||
Assert.Equal("用户备注01", group.Users[0].UserExt.Remark);
|
Assert.Equal("用户备注01", group.Users[0].UserExt.Remark);
|
||||||
Assert.Equal(0, group.Users[1].Id);
|
Assert.Equal(0, group.Users[1].Id);
|
||||||
Assert.Equal("admin02", group.Users[1].Username);
|
Assert.Equal("admin02", group.Users[1].Username);
|
||||||
Assert.Equal("pwd02", group.Users[1].Password);
|
Assert.Equal("pwd02", group.Users[1].Password);
|
||||||
Assert.True(group.Users[1].UserExt.UserId > 0);
|
Assert.True(group.Users[1].UserExt.UserId > 0);
|
||||||
Assert.Equal("用户备注02", group.Users[1].UserExt.Remark);
|
Assert.Equal("用户备注02", group.Users[1].UserExt.Remark);
|
||||||
Assert.Equal(0, group.Users[2].Id);
|
Assert.Equal(0, group.Users[2].Id);
|
||||||
Assert.Equal("admin03", group.Users[2].Username);
|
Assert.Equal("admin03", group.Users[2].Username);
|
||||||
Assert.Equal("pwd03", group.Users[2].Password);
|
Assert.Equal("pwd03", group.Users[2].Password);
|
||||||
Assert.True(group.Users[2].UserExt.UserId > 0);
|
Assert.True(group.Users[2].UserExt.UserId > 0);
|
||||||
Assert.Equal("用户备注03", group.Users[2].UserExt.Remark);
|
Assert.Equal("用户备注03", group.Users[2].UserExt.Remark);
|
||||||
Assert.False(groupRepo.Select.Any());
|
Assert.False(groupRepo.Select.Any());
|
||||||
Assert.False(userRepo.Select.Any());
|
Assert.False(userRepo.Select.Any());
|
||||||
Assert.False(userextRepo.Select.Any());
|
Assert.False(userextRepo.Select.Any());
|
||||||
|
|
||||||
//ManyToMany InDatabase
|
//ManyToMany InDatabase
|
||||||
fsql.Delete<DeleteCascadeUserGroup>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<DeleteCascadeUserGroup>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Delete<DeleteCascadeTag>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<DeleteCascadeTag>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Delete<DeleteCascadeUserTag>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<DeleteCascadeUserTag>().Where("1=1").ExecuteAffrows();
|
||||||
var tags = new[] {
|
var tags = new[] {
|
||||||
new DeleteCascadeTag { TagName = "tag01" },
|
new DeleteCascadeTag { TagName = "tag01" },
|
||||||
new DeleteCascadeTag { TagName = "tag02" },
|
new DeleteCascadeTag { TagName = "tag02" },
|
||||||
new DeleteCascadeTag { TagName = "tag03" },
|
new DeleteCascadeTag { TagName = "tag03" },
|
||||||
@ -195,94 +213,94 @@ namespace FreeSql.Tests
|
|||||||
new DeleteCascadeTag { TagName = "tag07" },
|
new DeleteCascadeTag { TagName = "tag07" },
|
||||||
new DeleteCascadeTag { TagName = "tag08" },
|
new DeleteCascadeTag { TagName = "tag08" },
|
||||||
};
|
};
|
||||||
tagRepo.Insert(tags);
|
tagRepo.Insert(tags);
|
||||||
groupRepo.DbContextOptions.EnableCascadeSave = true;
|
groupRepo.DbContextOptions.EnableCascadeSave = true;
|
||||||
group = new DeleteCascadeUserGroup
|
group = new DeleteCascadeUserGroup
|
||||||
{
|
{
|
||||||
GroupName = "group01",
|
GroupName = "group01",
|
||||||
Users = new List<DeleteCascadeUser>
|
Users = new List<DeleteCascadeUser>
|
||||||
{
|
{
|
||||||
new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" }, Tags = new List<DeleteCascadeTag> { tags[0], tags[2], tags[3], tags[6] } },
|
new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" }, Tags = new List<DeleteCascadeTag> { tags[0], tags[2], tags[3], tags[6] } },
|
||||||
new DeleteCascadeUser { Username = "admin02", Password = "pwd02", UserExt = new DeleteCascadeUserExt { Remark = "用户备注02" }, Tags = new List<DeleteCascadeTag> { tags[1], tags[2], tags[5] } },
|
new DeleteCascadeUser { Username = "admin02", Password = "pwd02", UserExt = new DeleteCascadeUserExt { Remark = "用户备注02" }, Tags = new List<DeleteCascadeTag> { tags[1], tags[2], tags[5] } },
|
||||||
new DeleteCascadeUser { Username = "admin03", Password = "pwd03", UserExt = new DeleteCascadeUserExt { Remark = "用户备注03" }, Tags = new List<DeleteCascadeTag> { tags[3], tags[4], tags[6], tags[7] } },
|
new DeleteCascadeUser { Username = "admin03", Password = "pwd03", UserExt = new DeleteCascadeUserExt { Remark = "用户备注03" }, Tags = new List<DeleteCascadeTag> { tags[3], tags[4], tags[6], tags[7] } },
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
groupRepo.Insert(group);
|
groupRepo.Insert(group);
|
||||||
Assert.Equal(group.Id, group.Users[0].GroupId);
|
Assert.Equal(group.Id, group.Users[0].GroupId);
|
||||||
Assert.Equal(group.Id, group.Users[1].GroupId);
|
Assert.Equal(group.Id, group.Users[1].GroupId);
|
||||||
Assert.Equal(group.Id, group.Users[2].GroupId);
|
Assert.Equal(group.Id, group.Users[2].GroupId);
|
||||||
ret = groupRepo.DeleteCascadeByDatabase(a => a.Id == group.Id);
|
ret = groupRepo.DeleteCascadeByDatabase(a => a.Id == group.Id);
|
||||||
Assert.Equal(18, ret.Count);
|
Assert.Equal(18, ret.Count);
|
||||||
|
|
||||||
Assert.IsType<DeleteCascadeUserExt>(ret[0]);
|
Assert.IsType<DeleteCascadeUserExt>(ret[0]);
|
||||||
Assert.Equal(group.Users[0].UserExt.UserId, (ret[0] as DeleteCascadeUserExt).UserId);
|
Assert.Equal(group.Users[0].UserExt.UserId, (ret[0] as DeleteCascadeUserExt).UserId);
|
||||||
Assert.Equal(group.Users[0].UserExt.Remark, (ret[0] as DeleteCascadeUserExt).Remark);
|
Assert.Equal(group.Users[0].UserExt.Remark, (ret[0] as DeleteCascadeUserExt).Remark);
|
||||||
Assert.IsType<DeleteCascadeUserExt>(ret[1]);
|
Assert.IsType<DeleteCascadeUserExt>(ret[1]);
|
||||||
Assert.Equal(group.Users[1].UserExt.UserId, (ret[1] as DeleteCascadeUserExt).UserId);
|
Assert.Equal(group.Users[1].UserExt.UserId, (ret[1] as DeleteCascadeUserExt).UserId);
|
||||||
Assert.Equal(group.Users[1].UserExt.Remark, (ret[1] as DeleteCascadeUserExt).Remark);
|
Assert.Equal(group.Users[1].UserExt.Remark, (ret[1] as DeleteCascadeUserExt).Remark);
|
||||||
Assert.IsType<DeleteCascadeUserExt>(ret[2]);
|
Assert.IsType<DeleteCascadeUserExt>(ret[2]);
|
||||||
Assert.Equal(group.Users[2].UserExt.UserId, (ret[2] as DeleteCascadeUserExt).UserId);
|
Assert.Equal(group.Users[2].UserExt.UserId, (ret[2] as DeleteCascadeUserExt).UserId);
|
||||||
Assert.Equal(group.Users[2].UserExt.Remark, (ret[2] as DeleteCascadeUserExt).Remark);
|
Assert.Equal(group.Users[2].UserExt.Remark, (ret[2] as DeleteCascadeUserExt).Remark);
|
||||||
|
|
||||||
Assert.IsType<DeleteCascadeUserTag>(ret[3]);
|
Assert.IsType<DeleteCascadeUserTag>(ret[3]);
|
||||||
Assert.Equal(group.Users[0].Id, (ret[3] as DeleteCascadeUserTag).UserId);
|
Assert.Equal(group.Users[0].Id, (ret[3] as DeleteCascadeUserTag).UserId);
|
||||||
Assert.Equal(tags[0].Id, (ret[3] as DeleteCascadeUserTag).TagId);
|
Assert.Equal(tags[0].Id, (ret[3] as DeleteCascadeUserTag).TagId);
|
||||||
Assert.IsType<DeleteCascadeUserTag>(ret[4]);
|
Assert.IsType<DeleteCascadeUserTag>(ret[4]);
|
||||||
Assert.Equal(group.Users[0].Id, (ret[4] as DeleteCascadeUserTag).UserId);
|
Assert.Equal(group.Users[0].Id, (ret[4] as DeleteCascadeUserTag).UserId);
|
||||||
Assert.Equal(tags[2].Id, (ret[4] as DeleteCascadeUserTag).TagId);
|
Assert.Equal(tags[2].Id, (ret[4] as DeleteCascadeUserTag).TagId);
|
||||||
Assert.IsType<DeleteCascadeUserTag>(ret[5]);
|
Assert.IsType<DeleteCascadeUserTag>(ret[5]);
|
||||||
Assert.Equal(group.Users[0].Id, (ret[5] as DeleteCascadeUserTag).UserId);
|
Assert.Equal(group.Users[0].Id, (ret[5] as DeleteCascadeUserTag).UserId);
|
||||||
Assert.Equal(tags[3].Id, (ret[5] as DeleteCascadeUserTag).TagId);
|
Assert.Equal(tags[3].Id, (ret[5] as DeleteCascadeUserTag).TagId);
|
||||||
Assert.IsType<DeleteCascadeUserTag>(ret[6]);
|
Assert.IsType<DeleteCascadeUserTag>(ret[6]);
|
||||||
Assert.Equal(group.Users[0].Id, (ret[6] as DeleteCascadeUserTag).UserId);
|
Assert.Equal(group.Users[0].Id, (ret[6] as DeleteCascadeUserTag).UserId);
|
||||||
Assert.Equal(tags[6].Id, (ret[6] as DeleteCascadeUserTag).TagId);
|
Assert.Equal(tags[6].Id, (ret[6] as DeleteCascadeUserTag).TagId);
|
||||||
|
|
||||||
Assert.IsType<DeleteCascadeUserTag>(ret[7]);
|
Assert.IsType<DeleteCascadeUserTag>(ret[7]);
|
||||||
Assert.Equal(group.Users[1].Id, (ret[7] as DeleteCascadeUserTag).UserId);
|
Assert.Equal(group.Users[1].Id, (ret[7] as DeleteCascadeUserTag).UserId);
|
||||||
Assert.Equal(tags[1].Id, (ret[7] as DeleteCascadeUserTag).TagId);
|
Assert.Equal(tags[1].Id, (ret[7] as DeleteCascadeUserTag).TagId);
|
||||||
Assert.IsType<DeleteCascadeUserTag>(ret[8]);
|
Assert.IsType<DeleteCascadeUserTag>(ret[8]);
|
||||||
Assert.Equal(group.Users[1].Id, (ret[8] as DeleteCascadeUserTag).UserId);
|
Assert.Equal(group.Users[1].Id, (ret[8] as DeleteCascadeUserTag).UserId);
|
||||||
Assert.Equal(tags[2].Id, (ret[8] as DeleteCascadeUserTag).TagId);
|
Assert.Equal(tags[2].Id, (ret[8] as DeleteCascadeUserTag).TagId);
|
||||||
Assert.IsType<DeleteCascadeUserTag>(ret[9]);
|
Assert.IsType<DeleteCascadeUserTag>(ret[9]);
|
||||||
Assert.Equal(group.Users[1].Id, (ret[9] as DeleteCascadeUserTag).UserId);
|
Assert.Equal(group.Users[1].Id, (ret[9] as DeleteCascadeUserTag).UserId);
|
||||||
Assert.Equal(tags[5].Id, (ret[9] as DeleteCascadeUserTag).TagId);
|
Assert.Equal(tags[5].Id, (ret[9] as DeleteCascadeUserTag).TagId);
|
||||||
|
|
||||||
Assert.IsType<DeleteCascadeUserTag>(ret[10]);
|
Assert.IsType<DeleteCascadeUserTag>(ret[10]);
|
||||||
Assert.Equal(group.Users[2].Id, (ret[10] as DeleteCascadeUserTag).UserId);
|
Assert.Equal(group.Users[2].Id, (ret[10] as DeleteCascadeUserTag).UserId);
|
||||||
Assert.Equal(tags[3].Id, (ret[10] as DeleteCascadeUserTag).TagId);
|
Assert.Equal(tags[3].Id, (ret[10] as DeleteCascadeUserTag).TagId);
|
||||||
Assert.IsType<DeleteCascadeUserTag>(ret[11]);
|
Assert.IsType<DeleteCascadeUserTag>(ret[11]);
|
||||||
Assert.Equal(group.Users[2].Id, (ret[11] as DeleteCascadeUserTag).UserId);
|
Assert.Equal(group.Users[2].Id, (ret[11] as DeleteCascadeUserTag).UserId);
|
||||||
Assert.Equal(tags[4].Id, (ret[11] as DeleteCascadeUserTag).TagId);
|
Assert.Equal(tags[4].Id, (ret[11] as DeleteCascadeUserTag).TagId);
|
||||||
Assert.IsType<DeleteCascadeUserTag>(ret[12]);
|
Assert.IsType<DeleteCascadeUserTag>(ret[12]);
|
||||||
Assert.Equal(group.Users[2].Id, (ret[12] as DeleteCascadeUserTag).UserId);
|
Assert.Equal(group.Users[2].Id, (ret[12] as DeleteCascadeUserTag).UserId);
|
||||||
Assert.Equal(tags[6].Id, (ret[12] as DeleteCascadeUserTag).TagId);
|
Assert.Equal(tags[6].Id, (ret[12] as DeleteCascadeUserTag).TagId);
|
||||||
Assert.IsType<DeleteCascadeUserTag>(ret[13]);
|
Assert.IsType<DeleteCascadeUserTag>(ret[13]);
|
||||||
Assert.Equal(group.Users[2].Id, (ret[13] as DeleteCascadeUserTag).UserId);
|
Assert.Equal(group.Users[2].Id, (ret[13] as DeleteCascadeUserTag).UserId);
|
||||||
Assert.Equal(tags[7].Id, (ret[13] as DeleteCascadeUserTag).TagId);
|
Assert.Equal(tags[7].Id, (ret[13] as DeleteCascadeUserTag).TagId);
|
||||||
|
|
||||||
Assert.IsType<DeleteCascadeUser>(ret[14]);
|
Assert.IsType<DeleteCascadeUser>(ret[14]);
|
||||||
Assert.Equal(group.Users[0].Id, (ret[14] as DeleteCascadeUser).Id);
|
Assert.Equal(group.Users[0].Id, (ret[14] as DeleteCascadeUser).Id);
|
||||||
Assert.Equal(group.Users[0].Username, (ret[14] as DeleteCascadeUser).Username);
|
Assert.Equal(group.Users[0].Username, (ret[14] as DeleteCascadeUser).Username);
|
||||||
Assert.Equal(group.Users[0].Password, (ret[14] as DeleteCascadeUser).Password);
|
Assert.Equal(group.Users[0].Password, (ret[14] as DeleteCascadeUser).Password);
|
||||||
Assert.IsType<DeleteCascadeUser>(ret[15]);
|
Assert.IsType<DeleteCascadeUser>(ret[15]);
|
||||||
Assert.Equal(group.Users[1].Id, (ret[15] as DeleteCascadeUser).Id);
|
Assert.Equal(group.Users[1].Id, (ret[15] as DeleteCascadeUser).Id);
|
||||||
Assert.Equal(group.Users[1].Username, (ret[15] as DeleteCascadeUser).Username);
|
Assert.Equal(group.Users[1].Username, (ret[15] as DeleteCascadeUser).Username);
|
||||||
Assert.Equal(group.Users[1].Password, (ret[15] as DeleteCascadeUser).Password);
|
Assert.Equal(group.Users[1].Password, (ret[15] as DeleteCascadeUser).Password);
|
||||||
Assert.IsType<DeleteCascadeUser>(ret[16]);
|
Assert.IsType<DeleteCascadeUser>(ret[16]);
|
||||||
Assert.Equal(group.Users[2].Id, (ret[16] as DeleteCascadeUser).Id);
|
Assert.Equal(group.Users[2].Id, (ret[16] as DeleteCascadeUser).Id);
|
||||||
Assert.Equal(group.Users[2].Username, (ret[16] as DeleteCascadeUser).Username);
|
Assert.Equal(group.Users[2].Username, (ret[16] as DeleteCascadeUser).Username);
|
||||||
Assert.Equal(group.Users[2].Password, (ret[16] as DeleteCascadeUser).Password);
|
Assert.Equal(group.Users[2].Password, (ret[16] as DeleteCascadeUser).Password);
|
||||||
Assert.IsType<DeleteCascadeUserGroup>(ret[17]);
|
Assert.IsType<DeleteCascadeUserGroup>(ret[17]);
|
||||||
Assert.Equal(group.Id, (ret[17] as DeleteCascadeUserGroup).Id);
|
Assert.Equal(group.Id, (ret[17] as DeleteCascadeUserGroup).Id);
|
||||||
Assert.Equal(group.GroupName, (ret[17] as DeleteCascadeUserGroup).GroupName);
|
Assert.Equal(group.GroupName, (ret[17] as DeleteCascadeUserGroup).GroupName);
|
||||||
|
|
||||||
//ManyToMany EnableCascadeSave InMemory
|
//ManyToMany EnableCascadeSave InMemory
|
||||||
fsql.Delete<DeleteCascadeUserGroup>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<DeleteCascadeUserGroup>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<DeleteCascadeUser>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Delete<DeleteCascadeTag>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<DeleteCascadeTag>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Delete<DeleteCascadeUserTag>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<DeleteCascadeUserTag>().Where("1=1").ExecuteAffrows();
|
||||||
tags = new[] {
|
tags = new[] {
|
||||||
new DeleteCascadeTag { TagName = "tag01" },
|
new DeleteCascadeTag { TagName = "tag01" },
|
||||||
new DeleteCascadeTag { TagName = "tag02" },
|
new DeleteCascadeTag { TagName = "tag02" },
|
||||||
new DeleteCascadeTag { TagName = "tag03" },
|
new DeleteCascadeTag { TagName = "tag03" },
|
||||||
@ -292,45 +310,46 @@ namespace FreeSql.Tests
|
|||||||
new DeleteCascadeTag { TagName = "tag07" },
|
new DeleteCascadeTag { TagName = "tag07" },
|
||||||
new DeleteCascadeTag { TagName = "tag08" },
|
new DeleteCascadeTag { TagName = "tag08" },
|
||||||
};
|
};
|
||||||
tagRepo.Insert(tags);
|
tagRepo.Insert(tags);
|
||||||
groupRepo.DbContextOptions.EnableCascadeSave = true;
|
groupRepo.DbContextOptions.EnableCascadeSave = true;
|
||||||
group = new DeleteCascadeUserGroup
|
group = new DeleteCascadeUserGroup
|
||||||
{
|
{
|
||||||
GroupName = "group01",
|
GroupName = "group01",
|
||||||
Users = new List<DeleteCascadeUser>
|
Users = new List<DeleteCascadeUser>
|
||||||
{
|
{
|
||||||
new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" }, Tags = new List<DeleteCascadeTag> { tags[0], tags[2], tags[3], tags[6] } },
|
new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" }, Tags = new List<DeleteCascadeTag> { tags[0], tags[2], tags[3], tags[6] } },
|
||||||
new DeleteCascadeUser { Username = "admin02", Password = "pwd02", UserExt = new DeleteCascadeUserExt { Remark = "用户备注02" }, Tags = new List<DeleteCascadeTag> { tags[1], tags[2], tags[5] } },
|
new DeleteCascadeUser { Username = "admin02", Password = "pwd02", UserExt = new DeleteCascadeUserExt { Remark = "用户备注02" }, Tags = new List<DeleteCascadeTag> { tags[1], tags[2], tags[5] } },
|
||||||
new DeleteCascadeUser { Username = "admin03", Password = "pwd03", UserExt = new DeleteCascadeUserExt { Remark = "用户备注03" }, Tags = new List<DeleteCascadeTag> { tags[3], tags[4], tags[6], tags[7] } },
|
new DeleteCascadeUser { Username = "admin03", Password = "pwd03", UserExt = new DeleteCascadeUserExt { Remark = "用户备注03" }, Tags = new List<DeleteCascadeTag> { tags[3], tags[4], tags[6], tags[7] } },
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
groupRepo.Insert(group);
|
groupRepo.Insert(group);
|
||||||
Assert.Equal(group.Id, group.Users[0].GroupId);
|
Assert.Equal(group.Id, group.Users[0].GroupId);
|
||||||
Assert.Equal(group.Id, group.Users[1].GroupId);
|
Assert.Equal(group.Id, group.Users[1].GroupId);
|
||||||
Assert.Equal(group.Id, group.Users[2].GroupId);
|
Assert.Equal(group.Id, group.Users[2].GroupId);
|
||||||
affrows = groupRepo.Delete(group);
|
affrows = groupRepo.Delete(group);
|
||||||
Assert.Equal(18, affrows);
|
Assert.Equal(18, affrows);
|
||||||
Assert.Equal(0, group.Id);
|
Assert.Equal(0, group.Id);
|
||||||
Assert.Equal("group01", group.GroupName);
|
Assert.Equal("group01", group.GroupName);
|
||||||
Assert.Equal(0, group.Users[0].Id);
|
Assert.Equal(0, group.Users[0].Id);
|
||||||
Assert.Equal("admin01", group.Users[0].Username);
|
Assert.Equal("admin01", group.Users[0].Username);
|
||||||
Assert.Equal("pwd01", group.Users[0].Password);
|
Assert.Equal("pwd01", group.Users[0].Password);
|
||||||
Assert.True(group.Users[0].UserExt.UserId > 0);
|
Assert.True(group.Users[0].UserExt.UserId > 0);
|
||||||
Assert.Equal("用户备注01", group.Users[0].UserExt.Remark);
|
Assert.Equal("用户备注01", group.Users[0].UserExt.Remark);
|
||||||
Assert.Equal(0, group.Users[1].Id);
|
Assert.Equal(0, group.Users[1].Id);
|
||||||
Assert.Equal("admin02", group.Users[1].Username);
|
Assert.Equal("admin02", group.Users[1].Username);
|
||||||
Assert.Equal("pwd02", group.Users[1].Password);
|
Assert.Equal("pwd02", group.Users[1].Password);
|
||||||
Assert.True(group.Users[1].UserExt.UserId > 0);
|
Assert.True(group.Users[1].UserExt.UserId > 0);
|
||||||
Assert.Equal("用户备注02", group.Users[1].UserExt.Remark);
|
Assert.Equal("用户备注02", group.Users[1].UserExt.Remark);
|
||||||
Assert.Equal(0, group.Users[2].Id);
|
Assert.Equal(0, group.Users[2].Id);
|
||||||
Assert.Equal("admin03", group.Users[2].Username);
|
Assert.Equal("admin03", group.Users[2].Username);
|
||||||
Assert.Equal("pwd03", group.Users[2].Password);
|
Assert.Equal("pwd03", group.Users[2].Password);
|
||||||
Assert.True(group.Users[2].UserExt.UserId > 0);
|
Assert.True(group.Users[2].UserExt.UserId > 0);
|
||||||
Assert.Equal("用户备注03", group.Users[2].UserExt.Remark);
|
Assert.Equal("用户备注03", group.Users[2].UserExt.Remark);
|
||||||
Assert.False(groupRepo.Select.Any());
|
Assert.False(groupRepo.Select.Any());
|
||||||
Assert.False(userRepo.Select.Any());
|
Assert.False(userRepo.Select.Any());
|
||||||
Assert.False(userextRepo.Select.Any());
|
Assert.False(userextRepo.Select.Any());
|
||||||
Assert.False(fsql.Select<DeleteCascadeUserTag>().Any());
|
Assert.False(fsql.Select<DeleteCascadeUserTag>().Any());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public class DeleteCascadeUser
|
public class DeleteCascadeUser
|
||||||
{
|
{
|
||||||
@ -339,6 +358,7 @@ namespace FreeSql.Tests
|
|||||||
public string Username { get; set; }
|
public string Username { get; set; }
|
||||||
public string Password { get; set; }
|
public string Password { get; set; }
|
||||||
public int GroupId { get; set; }
|
public int GroupId { get; set; }
|
||||||
|
public bool IsDeleted { get; set; }
|
||||||
|
|
||||||
[Navigate(nameof(Id))]
|
[Navigate(nameof(Id))]
|
||||||
public DeleteCascadeUserExt UserExt { get; set; }
|
public DeleteCascadeUserExt UserExt { get; set; }
|
||||||
@ -350,6 +370,7 @@ namespace FreeSql.Tests
|
|||||||
[Column(IsPrimary = true)]
|
[Column(IsPrimary = true)]
|
||||||
public int UserId { get; set; }
|
public int UserId { get; set; }
|
||||||
public string Remark { get; set; }
|
public string Remark { get; set; }
|
||||||
|
public bool IsDeleted { get; set; }
|
||||||
|
|
||||||
[Navigate(nameof(UserId))]
|
[Navigate(nameof(UserId))]
|
||||||
public DeleteCascadeUser User { get; set; }
|
public DeleteCascadeUser User { get; set; }
|
||||||
@ -359,6 +380,7 @@ namespace FreeSql.Tests
|
|||||||
[Column(IsIdentity = true)]
|
[Column(IsIdentity = true)]
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
public string GroupName { get; set; }
|
public string GroupName { get; set; }
|
||||||
|
public bool IsDeleted { get; set; }
|
||||||
|
|
||||||
[Navigate(nameof(DeleteCascadeUser.GroupId))]
|
[Navigate(nameof(DeleteCascadeUser.GroupId))]
|
||||||
public List<DeleteCascadeUser> Users { get; set; }
|
public List<DeleteCascadeUser> Users { get; set; }
|
||||||
@ -368,6 +390,7 @@ namespace FreeSql.Tests
|
|||||||
[Column(IsIdentity = true)]
|
[Column(IsIdentity = true)]
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
public string TagName { get; set; }
|
public string TagName { get; set; }
|
||||||
|
public bool IsDeleted { get; set; }
|
||||||
|
|
||||||
[Navigate(ManyToMany = typeof(DeleteCascadeUserTag))]
|
[Navigate(ManyToMany = typeof(DeleteCascadeUserTag))]
|
||||||
public List<DeleteCascadeUser> Users { get; set; }
|
public List<DeleteCascadeUser> Users { get; set; }
|
||||||
@ -376,6 +399,7 @@ namespace FreeSql.Tests
|
|||||||
{
|
{
|
||||||
public int UserId { get; set; }
|
public int UserId { get; set; }
|
||||||
public int TagId { get; set; }
|
public int TagId { get; set; }
|
||||||
|
public bool IsDeleted { get; set; }
|
||||||
|
|
||||||
[Navigate(nameof(UserId))]
|
[Navigate(nameof(UserId))]
|
||||||
public DeleteCascadeUser User { get; set; }
|
public DeleteCascadeUser User { get; set; }
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -174,6 +174,9 @@ namespace FreeSql.Tests.Sqlite
|
|||||||
|
|
||||||
sql = update.Set(a => a.Clicks == null).Where(a => a.Id == 1).ToSql().Replace("\r\n", "");
|
sql = update.Set(a => a.Clicks == null).Where(a => a.Id == 1).ToSql().Replace("\r\n", "");
|
||||||
Assert.Equal("UPDATE \"tb_topic\" SET \"Clicks\" = NULL WHERE (\"Id\" = 1)", sql);
|
Assert.Equal("UPDATE \"tb_topic\" SET \"Clicks\" = NULL WHERE (\"Id\" = 1)", sql);
|
||||||
|
|
||||||
|
sql = update.SetIf(false, a => a.Clicks == null).Where(a => a.Id == 1).ToSql()?.Replace("\r\n", "");
|
||||||
|
Assert.Null(sql);
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void SetRaw()
|
public void SetRaw()
|
||||||
|
@ -177,6 +177,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
sb.Append(sql).Append("\r\n\r\n;\r\n\r\n");
|
sb.Append(sql).Append("\r\n\r\n;\r\n\r\n");
|
||||||
});
|
});
|
||||||
if (sb.Length > 0) sb.Remove(sb.Length - 9, 9);
|
if (sb.Length > 0) sb.Remove(sb.Length - 9, 9);
|
||||||
|
if (sb.Length == 0) return null;
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -797,6 +797,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
sb2.Append(sql).Append("\r\n\r\n;\r\n\r\n");
|
sb2.Append(sql).Append("\r\n\r\n;\r\n\r\n");
|
||||||
});
|
});
|
||||||
if (sb2.Length > 0) sb2.Remove(sb2.Length - 9, 9);
|
if (sb2.Length > 0) sb2.Remove(sb2.Length - 9, 9);
|
||||||
|
if (sb2.Length == 0) return null;
|
||||||
return sb2.ToString();
|
return sb2.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -866,6 +867,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
public virtual void ToSqlExtension110(StringBuilder sb, bool isAsTableSplited)
|
public virtual void ToSqlExtension110(StringBuilder sb, bool isAsTableSplited)
|
||||||
{
|
{
|
||||||
if (_where.Length == 0 && _source.Any() == false) return;
|
if (_where.Length == 0 && _source.Any() == false) return;
|
||||||
|
if (_source.Any() == false && _set.Length == 0 && _setIncr.Length == 0) return;
|
||||||
|
|
||||||
if (_table.AsTableImpl != null && isAsTableSplited == false && _source == _sourceOld && _source.Any())
|
if (_table.AsTableImpl != null && isAsTableSplited == false && _source == _sourceOld && _source.Any())
|
||||||
{
|
{
|
||||||
|
@ -20,7 +20,7 @@ namespace FreeSql.ClickHouse.Curd
|
|||||||
|
|
||||||
public override string ToSql()
|
public override string ToSql()
|
||||||
{
|
{
|
||||||
return base.ToSql().Replace("DELETE FROM ", "ALTER TABLE ").Replace(" WHERE ", " DELETE WHERE ");
|
return base.ToSql()?.Replace("DELETE FROM ", "ALTER TABLE ").Replace(" WHERE ", " DELETE WHERE ");
|
||||||
}
|
}
|
||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
|
@ -68,6 +68,7 @@ namespace FreeSql.ClickHouse.Curd
|
|||||||
public override void ToSqlExtension110(StringBuilder sb, bool isAsTableSplited)
|
public override void ToSqlExtension110(StringBuilder sb, bool isAsTableSplited)
|
||||||
{
|
{
|
||||||
if (_where.Length == 0 && _source.Any() == false) return;
|
if (_where.Length == 0 && _source.Any() == false) return;
|
||||||
|
if (_source.Any() == false && _set.Length == 0 && _setIncr.Length == 0) return;
|
||||||
|
|
||||||
if (_table.AsTableImpl != null && isAsTableSplited == false && _source == _sourceOld && _source.Any())
|
if (_table.AsTableImpl != null && isAsTableSplited == false && _source == _sourceOld && _source.Any())
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user