mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-04 23:40:53 +08:00
update
@@ -99,7 +99,7 @@ The benefits of using this method for complex deletion:
|
|||||||
1、Cascade deletion based on \[object\]
|
1、Cascade deletion based on \[object\]
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
var repo = fsql.GetRepository<Group>();
|
var repo = fsql.GetRepository<UserGroup>();
|
||||||
repo.DbContextOptions.EnableCascadeSave = true; //Key settings
|
repo.DbContextOptions.EnableCascadeSave = true; //Key settings
|
||||||
repo.Insert(new UserGroup
|
repo.Insert(new UserGroup
|
||||||
{
|
{
|
||||||
@@ -130,7 +130,7 @@ repo.Delete(groups); //Cascade deletion, recursively traversing the navigation p
|
|||||||
> According to the set navigation properties, recursively delete the corresponding data of OneToOne/OneToMany/ManyToMany, and return the deleted data. This feature does not rely on database foreign keys
|
> According to the set navigation properties, recursively delete the corresponding data of OneToOne/OneToMany/ManyToMany, and return the deleted data. This feature does not rely on database foreign keys
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
var repo = fsql.GetRepository<Group>();
|
var repo = fsql.GetRepository<UserGroup>();
|
||||||
var ret = repo.DeleteCascadeByDatabase(a => a.Id == 1);
|
var ret = repo.DeleteCascadeByDatabase(a => a.Id == 1);
|
||||||
//SELECT a."id", a."username", a."password", a."groupid" FROM "user" a WHERE (a."groupid" = 1)
|
//SELECT a."id", a."username", a."password", a."groupid" FROM "user" a WHERE (a."groupid" = 1)
|
||||||
//SELECT a."userid", a."remark" FROM "userext" a WHERE (a."userid" IN (3,4,5))
|
//SELECT a."userid", a."remark" FROM "userext" a WHERE (a."userid" IN (3,4,5))
|
||||||
@@ -147,7 +147,7 @@ var ret = repo.DeleteCascadeByDatabase(a => a.Id == 1);
|
|||||||
// [5] {User} object {User}
|
// [5] {User} object {User}
|
||||||
// [6] {UserGroup} object {UserGroup}
|
// [6] {UserGroup} object {UserGroup}
|
||||||
|
|
||||||
public class Group
|
public class UserGroup
|
||||||
{
|
{
|
||||||
[Column(IsIdentity = true)]
|
[Column(IsIdentity = true)]
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|||||||
6
删除.md
6
删除.md
@@ -102,7 +102,7 @@ DELETE FROM `T1` WHERE id in (select a.id from T1 a left join Options b on b.t1i
|
|||||||
> 比如 Include/IncludeMany 查询的对象,可以使用此方法级联删除它们。
|
> 比如 Include/IncludeMany 查询的对象,可以使用此方法级联删除它们。
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
var repo = fsql.GetRepository<Group>();
|
var repo = fsql.GetRepository<UserGroup>();
|
||||||
repo.DbContextOptions.EnableCascadeSave = true; //关键设置
|
repo.DbContextOptions.EnableCascadeSave = true; //关键设置
|
||||||
repo.Insert(new UserGroup
|
repo.Insert(new UserGroup
|
||||||
{
|
{
|
||||||
@@ -133,7 +133,7 @@ repo.Delete(groups); //级联删除,递归向下遍历 group OneToOne/OneToMan
|
|||||||
> 根据设置的导航属性,递归删除 OneToOne/OneToMany/ManyToMany 对应数据,并返回已删除的数据。此功能不依赖数据库外键
|
> 根据设置的导航属性,递归删除 OneToOne/OneToMany/ManyToMany 对应数据,并返回已删除的数据。此功能不依赖数据库外键
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
var repo = fsql.GetRepository<Group>();
|
var repo = fsql.GetRepository<UserGroup>();
|
||||||
var ret = repo.DeleteCascadeByDatabase(a => a.Id == 1);
|
var ret = repo.DeleteCascadeByDatabase(a => a.Id == 1);
|
||||||
//SELECT a."id", a."username", a."password", a."groupid" FROM "user" a WHERE (a."groupid" = 1)
|
//SELECT a."id", a."username", a."password", a."groupid" FROM "user" a WHERE (a."groupid" = 1)
|
||||||
//SELECT a."userid", a."remark" FROM "userext" a WHERE (a."userid" IN (3,4,5))
|
//SELECT a."userid", a."remark" FROM "userext" a WHERE (a."userid" IN (3,4,5))
|
||||||
@@ -150,7 +150,7 @@ var ret = repo.DeleteCascadeByDatabase(a => a.Id == 1);
|
|||||||
// [5] {User} object {User}
|
// [5] {User} object {User}
|
||||||
// [6] {UserGroup} object {UserGroup}
|
// [6] {UserGroup} object {UserGroup}
|
||||||
|
|
||||||
public class Group
|
public class UserGroup
|
||||||
{
|
{
|
||||||
[Column(IsIdentity = true)]
|
[Column(IsIdentity = true)]
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|||||||
6
联级删除.md
6
联级删除.md
@@ -5,7 +5,7 @@
|
|||||||
> 比如 Include/IncludeMany 查询的对象,可以使用此方法级联删除它们。
|
> 比如 Include/IncludeMany 查询的对象,可以使用此方法级联删除它们。
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
var repo = fsql.GetRepository<Group>();
|
var repo = fsql.GetRepository<UserGroup>();
|
||||||
repo.DbContextOptions.EnableCascadeSave = true; //关键设置
|
repo.DbContextOptions.EnableCascadeSave = true; //关键设置
|
||||||
repo.Insert(new UserGroup
|
repo.Insert(new UserGroup
|
||||||
{
|
{
|
||||||
@@ -36,7 +36,7 @@ repo.Delete(groups); //级联删除,递归向下遍历 group OneToOne/OneToMan
|
|||||||
> 根据设置的导航属性,递归删除 OneToOne/OneToMany/ManyToMany 对应数据,并返回已删除的数据。此功能不依赖数据库外键
|
> 根据设置的导航属性,递归删除 OneToOne/OneToMany/ManyToMany 对应数据,并返回已删除的数据。此功能不依赖数据库外键
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
var repo = fsql.GetRepository<Group>();
|
var repo = fsql.GetRepository<UserGroup>();
|
||||||
var ret = repo.DeleteCascadeByDatabase(a => a.Id == 1);
|
var ret = repo.DeleteCascadeByDatabase(a => a.Id == 1);
|
||||||
//SELECT a."id", a."username", a."password", a."groupid" FROM "user" a WHERE (a."groupid" = 1)
|
//SELECT a."id", a."username", a."password", a."groupid" FROM "user" a WHERE (a."groupid" = 1)
|
||||||
//SELECT a."userid", a."remark" FROM "userext" a WHERE (a."userid" IN (3,4,5))
|
//SELECT a."userid", a."remark" FROM "userext" a WHERE (a."userid" IN (3,4,5))
|
||||||
@@ -53,7 +53,7 @@ var ret = repo.DeleteCascadeByDatabase(a => a.Id == 1);
|
|||||||
// [5] {User} object {User}
|
// [5] {User} object {User}
|
||||||
// [6] {UserGroup} object {UserGroup}
|
// [6] {UserGroup} object {UserGroup}
|
||||||
|
|
||||||
public class Group
|
public class UserGroup
|
||||||
{
|
{
|
||||||
[Column(IsIdentity = true)]
|
[Column(IsIdentity = true)]
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|||||||
Reference in New Issue
Block a user