diff --git a/Src/Asp.NetCore2/SqlSeverTest/UnitTest/Main.cs b/Src/Asp.NetCore2/SqlSeverTest/UnitTest/Main.cs index 8c5bad898..543c2df24 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/UnitTest/Main.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/UnitTest/Main.cs @@ -30,6 +30,7 @@ namespace OrmTest } public static void Init() { + UnitOneToMany1231123.Init(); OneToManyInString.Init(); UnitSplitTask.Init(); UinitUpdateNavOneToOne.Init(); diff --git a/Src/Asp.NetCore2/SqlSeverTest/UnitTest/UnitOneToManyUpdate21.cs b/Src/Asp.NetCore2/SqlSeverTest/UnitTest/UnitOneToManyUpdate21.cs new file mode 100644 index 000000000..dc11c56b7 --- /dev/null +++ b/Src/Asp.NetCore2/SqlSeverTest/UnitTest/UnitOneToManyUpdate21.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace OrmTest +{ + public class UnitOneToMany1231123 + { + public static void Init() + { + var db = NewUnitTest.Db; + db.CodeFirst.InitTables(); + db.DbMaintenance.TruncateTable(); + + var address = new UnitAddress011 + { + Street = "123 Main Street" + }; + int addressId = db.Insertable(address).ExecuteReturnIdentity(); + + // 创建 UnitPerson011 对象并插入记录 + var person = new UnitPerson011 + { + Name = "John Doe", + AddressId = addressId + }; + int personId = db.Insertable(person).ExecuteReturnIdentity(); + + var list = db.Queryable().Includes(x => x.Persons).ToList(); + + var list2=db.Queryable().Includes(x=>x.Persons).First(); + list2.Persons.First().Name = "Update"; + list2.Persons.Add(new UnitPerson011() { + Name="jack", + AddressId=addressId + }); + db.UpdateNav(list2) + .Include(x => x.Persons,new SqlSugar.UpdateNavOptions() + { + OneToManyInsertOrUpdate = true, + }).ExecuteCommand(); + + var list3 = db.Queryable().Includes(x => x.Persons).First(); + if (list3.Persons.Count() != 2 || list3.Persons.First().Name != "Update" || list3.Persons.Last().Name != "jack") + { + throw new Exception("unit error"); + } + + list3.Persons.Remove(list3.Persons.Last()); + list3.Persons.First().Name = "Update2"; + db.UpdateNav(list3) + .Include(x => x.Persons, new SqlSugar.UpdateNavOptions() + { + OneToManyInsertOrUpdate = true, + }).ExecuteCommand(); + + var list4 = db.Queryable().Includes(x => x.Persons).First(); +; if (list4.Persons.Count() != 1 || list4.Persons.First().Name != "Update2" ) + { + throw new Exception("unit error"); + } + + } + [SqlSugar.SugarTable("UnitPerson0112s22a2")] + public class UnitPerson011 + { + [SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public int Id { get; set; } + public string Name { get; set; } + public int AddressId { get; set; } + } + [SqlSugar.SugarTable("UnitAddress0110112s22a2")] + public class UnitAddress011 + { + [SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public int Id { get; set; } + public string Street { get; set; } + [SqlSugar.Navigate(SqlSugar.NavigateType.OneToMany, nameof(UnitPerson011.AddressId))] + public List Persons { get; set; } + } + } + +}