diff --git a/Src/Asp.Net/SqlServerTest/Demo/Demo3_Insertable.cs b/Src/Asp.Net/SqlServerTest/Demo/Demo3_Insertable.cs index 425002f5b..da3938b36 100644 --- a/Src/Asp.Net/SqlServerTest/Demo/Demo3_Insertable.cs +++ b/Src/Asp.Net/SqlServerTest/Demo/Demo3_Insertable.cs @@ -89,7 +89,7 @@ namespace OrmTest }) .AddSubList(it => it.Items.First().OrderId).ExecuteReturnPrimaryKey(); - + db.Insertable(new List() { new RootTable0() @@ -133,8 +133,8 @@ namespace OrmTest .AddSubList(it => it.TwoItem.RootId) .AddSubList(it => new SubInsertTree() { - Expression = it.TwoItem2.RootId, - ChildExpression=new List() { + Expression = it.TwoItem2.RootId, + ChildExpression = new List() { new SubInsertTree(){ Expression=it.TwoItem2.ThreeItem2.First().TwoItem2Id } @@ -143,7 +143,14 @@ namespace OrmTest .AddSubList(it => it.TwoItem3) .ExecuteReturnPrimaryKey(); + SubNoIdentity(db); + SubIdentity(db); + Console.WriteLine("#### Insertable End ####"); + } + + private static void SubNoIdentity(SqlSugarClient db) + { db.CodeFirst.InitTables(); db.DbMaintenance.TruncateTable("Country"); db.DbMaintenance.TruncateTable("Province"); @@ -211,18 +218,96 @@ namespace OrmTest }) .ExecuteReturnPrimaryKey(); - var list= db.Queryable() + var list = db.Queryable() .Mapper(it => it.Provinces, it => it.Provinces.First().CountryId) - .Mapper(it=> { + .Mapper(it => + { foreach (var item in it.Provinces) { item.citys = db.Queryable().Where(y => y.ProvinceId == item.Id).ToList(); } - }) + }) .ToList(); + } + private static void SubIdentity(SqlSugarClient db) + { + db.CodeFirst.InitTables(); + db.DbMaintenance.TruncateTable("Country1"); + db.DbMaintenance.TruncateTable("Province1"); + db.DbMaintenance.TruncateTable("City1"); + db.Insertable(new List() + { + new Country1(){ + Id=1, + Name="中国", + Provinces=new List(){ + new Province1{ + Id=1001, + Name="江苏", + citys=new List(){ + new City1(){ Id=1001001, Name="南通" }, + new City1(){ Id=1001002, Name="南京" } + } + }, + new Province1{ + Id=1002, + Name="上海", + citys=new List(){ + new City1(){ Id=1002001, Name="徐汇" }, + new City1(){ Id=1002002, Name="普陀" } + } + }, + new Province1{ + Id=1003, + Name="北京", + citys=new List(){ + new City1(){ Id=1003001, Name="北京A" }, + new City1(){ Id=1003002, Name="北京B" } + } + } + } + }, + new Country1(){ + Name="美国", + Id=2, + Provinces=new List() + { + new Province1(){ + Name="美国小A", + Id=20001 + }, + new Province1(){ + Name="美国小b", + Id=20002 + } + } + }, + new Country1(){ + Name="英国", + Id=3 + } + }) + .AddSubList(it => new SubInsertTree() + { + Expression = it.Provinces.First().CountryId, + ChildExpression = new List() { + new SubInsertTree(){ + Expression=it.Provinces.First().citys.First().ProvinceId + } + } + }) + .ExecuteReturnPrimaryKey(); - Console.WriteLine("#### Insertable End ####"); - + var list = db.Queryable() + .Mapper(it => it.Provinces, it => it.Provinces.First().CountryId) + .Mapper(it => + { + foreach (var item in it.Provinces) + { + item.citys = db.Queryable().Where(y => y.ProvinceId == item.Id).ToList(); + } + }) + .ToList(); } } } diff --git a/Src/Asp.Net/SqlServerTest/Models/SubInsertTest.cs b/Src/Asp.Net/SqlServerTest/Models/SubInsertTest.cs index f30a90754..702f93a93 100644 --- a/Src/Asp.Net/SqlServerTest/Models/SubInsertTest.cs +++ b/Src/Asp.Net/SqlServerTest/Models/SubInsertTest.cs @@ -76,4 +76,33 @@ namespace OrmTest public int ProvinceId { get; set; } public string Name { get; set; } } + + + public class Country1 + { + [SqlSugar.SugarColumn(IsPrimaryKey = true,IsIdentity =true)] + public int Id { get; set; } + public string Name { get; set; } + + [SqlSugar.SugarColumn(IsIgnore = true)] + public List Provinces { get; set; } + } + + public class Province1 + { + [SqlSugar.SugarColumn(IsPrimaryKey = true,IsIdentity =true)] + public int Id { get; set; } + public string Name { get; set; } + public int CountryId { get; set; } + [SqlSugar.SugarColumn(IsIgnore = true)] + public List citys { get; set; } + } + + public class City1 + { + [SqlSugar.SugarColumn(IsPrimaryKey = true,IsIdentity =true)] + public int Id { get; set; } + public int ProvinceId { get; set; } + public string Name { get; set; } + } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/SubInserable.cs b/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/SubInserable.cs index d74e13baa..9b869d69d 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/SubInserable.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/SubInserable.cs @@ -267,6 +267,7 @@ namespace SqlSugar if (id.ObjToInt() == 0) { var primaryProperty = entityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey); + Check.Exception(primaryProperty == null, entityInfo.EntityName + " no primarykey"); pkValue = primaryProperty.PropertyInfo.GetValue(InsertObject); } else