导航更新,为什么没有将之前存在的删除,新增能够成功 返回

我的目标是想导航更新,完成他下方的子集删除然后新增,现在第二层Tab2s 是可以的 第三层Tab3s 没有删除,只是做了新增
[ApiController]
[Route("api/[controller]")]
public class TestController
{
[HttpGet]
public object Get()
{
Console.WriteLine("Hello, World!");
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "Host=localhost;Port=5432;Database=Inventory2;Username=postgres;Password=123;Include Error Detail=true;",
DbType = DbType.PostgreSQL,
IsAutoCloseConnection = true,
});
//db.DbMaintenance.CreateDatabase();
db.CodeFirst.InitTables<Tab1, Tab2, Tab3, Tab4>();//Create Table
Tab1 tab1 = new Tab1();
tab1.Name = "111";
tab1.Tab2s = new List<Tab2>();
tab1.Tab2s.Add(new Tab2() { Name = "222" });
tab1.Tab2s[0].Tab3s = new Tab3() { Name = "333" };
var result = 1;
//db.InsertNav(tab1)
// .Include(t1 => t1.Tab2s)
// .ThenInclude(t2 => t2.Tab3s)
// .ThenInclude(t3 => t3.Tab4s).ExecuteCommand();
var list = db.Queryable<Tab1>()
.Includes(s => s.Tab2s, i => i.Tab3s).ToList();
list.ForEach(s =>
{
s.Tab2s[0].Id = 0;
s.Tab2s[0].Tab3Id = 0;
s.Tab2s[0].Tab3s.Id = 0;
});
db.UpdateNav(list).Include(o => o.Tab2s)
.ThenInclude(o => o.Tab3s).ExecuteCommand();
return result;
}
//用例实体
[SqlSugar.SugarTable("Tab1")]
public class Tab1
{
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public long Id { get; set; }
public string Name { get; set; }
[SugarColumn(IsIgnore = true)]
[Navigate(NavigateType.OneToMany, nameof(Tab2.Tab1Id))]
public List<Tab2> Tab2s { get; set; }
}
[SqlSugar.SugarTable("Tab2")]
public class Tab2
{
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public long Id { get; set; }
public string Name { get; set; }
public long Tab1Id { get; set; }
public long Tab3Id { get; set; }
[SugarColumn(IsIgnore = true)]
[Navigate(NavigateType.OneToOne, nameof(Tab3Id))]
public Tab3 Tab3s { get; set; }
}
[SqlSugar.SugarTable("Tab3")]
public class Tab3
{
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public long Id { get; set; }
public string Name { get; set; }
public long Tab1Id { get; set; }//问题:Tab1Id没有自动填充,如果想要填充改怎么写
public long Tab2Id { get; set; }
[SugarColumn(IsIgnore = true)]
[Navigate(NavigateType.OneToMany, nameof(Tab4.Tab3Id))]
public List<Tab4> Tab4s { get; set; }
}
[SqlSugar.SugarTable("Tab4")]
public class Tab4
{
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public long Id { get; set; }
public string Name { get; set; }
public long Tab1Id { get; set; }//问题:Tab1Id没有自动填充,如果想要填充改怎么写
public long Tab2Id { get; set; }//问题:Tab2Id没有自动填充,如果想要填充改怎么写
public long Tab3Id { get; set; }
}
}
热忱回答(3)
-
fate sta VIP0
2025/1/15一对一不删数据,只做更新处理,只有一对多才删
0 回复 -
fate sta VIP0
2025/1/15下面可以写个delete XXXX表找不到引用的 就删掉,多一行代码就行了
0 回复 -
机智的大狸子 VIP0
2025/1/15好的
0 回复