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

SqlSugar 沟通中
3 231

我的目标是想导航更新,完成他下方的子集删除然后新增,现在第二层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