Skip to content

Commit c5b1488

Browse files
committed
- 修复 聚合根仓储 InsertOrUpdate OneToMany 只插入一条记录的 bug;
1 parent b18f9a5 commit c5b1488

File tree

8 files changed

+779
-308
lines changed

8 files changed

+779
-308
lines changed

Extensions/FreeSql.Extensions.AggregateRoot/AggregateRootRepository/AggregateRootRepositoryAsync.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ async Task<List<T1>> InsertWithinBoundaryStaticAsync<T1>(string boundaryName, IB
5353
bool LocalCanInsert(Type entityType, object entity, bool isadd)
5454
{
5555
var stateKey = rootRepository.Orm.GetEntityKeyString(entityType, entity, false);
56-
if (stateKey == null) return true;
56+
if (string.IsNullOrEmpty(stateKey)) return true;
5757
if (ignores.TryGetValue(entityType, out var stateKeys) == false)
5858
{
5959
if (isadd)

Extensions/FreeSql.Extensions.AggregateRoot/AggregateRootRepository/AggregateRootRepositorySync.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ static List<T1> InsertWithinBoundaryStatic<T1>(string boundaryName, IBaseReposit
106106
bool LocalCanInsert(Type entityType, object entity, bool isadd)
107107
{
108108
var stateKey = rootRepository.Orm.GetEntityKeyString(entityType, entity, false);
109-
if (stateKey == null) return true;
109+
if (string.IsNullOrEmpty(stateKey)) return true;
110110
if (ignores.TryGetValue(entityType, out var stateKeys) == false)
111111
{
112112
if (isadd)

Extensions/FreeSql.Extensions.AggregateRoot/AggregateRootRepository/AggregateRootUtils.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,12 +151,12 @@ void LocalCompareEntityValueCollection(Type elementType, IEnumerable collectionB
151151
foreach (var item in collectionBefore)
152152
{
153153
var key = fsql.GetEntityKeyString(elementType, item, false);
154-
if (key != null) dictBefore.Add(key, item);
154+
if (!string.IsNullOrEmpty(key)) dictBefore.Add(key, item);
155155
}
156156
foreach (var item in collectionAfter)
157157
{
158158
var key = fsql.GetEntityKeyString(elementType, item, false);
159-
if (key != null)
159+
if (!string.IsNullOrEmpty(key))
160160
{
161161
if (dictAfter.ContainsKey(key) == false)
162162
dictAfter.Add(key, item);

FreeSql.DbContext/FreeSql.DbContext.xml

Lines changed: 0 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

FreeSql.Tests/FreeSql.Tests.DbContext2/AggregateRootRepositoryTest2.cs

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,38 @@ public OrderRepository(IFreeSql fsql, UnitOfWorkManager uowManager) : base(uowMa
2121
public override ISelect<Order> Select => base.SelectDiy;
2222
}
2323

24+
[Fact]
25+
public void Test2()
26+
{
27+
using (var fsql = g.CreateMemory())
28+
{
29+
new OrderRepository(fsql, null);
30+
var repo = fsql.GetAggregateRootRepository<Order>();
31+
32+
var order = new Order
33+
{
34+
Field2 = "field2",
35+
Extdata = new OrderExt { Field3 = "field3" },
36+
//Details = new List<OrderDetail>
37+
//{
38+
// new OrderDetail { Field4 = "field4_01", Extdata = new OrderDetailExt { Field5 = "field5_01" } },
39+
// new OrderDetail { Field4 = "field4_02", Extdata = new OrderDetailExt { Field5 = "field5_02" } },
40+
// new OrderDetail { Field4 = "field4_03", Extdata = new OrderDetailExt { Field5 = "field5_03" } },
41+
//},
42+
};
43+
repo.Insert(order); //级联插入
44+
45+
var findOrder = repo.Select.Where(a => a.Id == order.Id).First();
46+
findOrder.Details = new List<OrderDetail>
47+
{
48+
new OrderDetail { Field4 = "field4_01", Extdata = new OrderDetailExt { Field5 = "field5_01" } },
49+
new OrderDetail { Field4 = "field4_02", Extdata = new OrderDetailExt { Field5 = "field5_02" } },
50+
new OrderDetail { Field4 = "field4_03", Extdata = new OrderDetailExt { Field5 = "field5_03" } },
51+
};
52+
repo.InsertOrUpdate(findOrder);
53+
}
54+
}
55+
2456
[Fact]
2557
public void Test1()
2658
{
@@ -79,11 +111,11 @@ void LocalTest()
79111
Field2 = "field2",
80112
Extdata = new OrderExt { Field3 = "field3" },
81113
Details = new List<OrderDetail>
82-
{
83-
new OrderDetail { Field4 = "field4_01", Extdata = new OrderDetailExt { Field5 = "field5_01" } },
84-
new OrderDetail { Field4 = "field4_02", Extdata = new OrderDetailExt { Field5 = "field5_02" } },
85-
new OrderDetail { Field4 = "field4_03", Extdata = new OrderDetailExt { Field5 = "field5_03" } },
86-
},
114+
{
115+
new OrderDetail { Field4 = "field4_01", Extdata = new OrderDetailExt { Field5 = "field5_01" } },
116+
new OrderDetail { Field4 = "field4_02", Extdata = new OrderDetailExt { Field5 = "field5_02" } },
117+
new OrderDetail { Field4 = "field4_03", Extdata = new OrderDetailExt { Field5 = "field5_03" } },
118+
},
87119
Tags = fsql.Select<Tag>().Where(a => new[] { 1, 2, 3 }.Contains(a.Id)).ToList()
88120
};
89121
repo.Insert(order); //级联插入

0 commit comments

Comments
 (0)