Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit e0ab2fe

Browse files
committed
Fix self-reference test and impl for checking on FK value, not parent PK value
1 parent 7100f22 commit e0ab2fe

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

src/ServiceStack.OrmLite/OrmLiteReadExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,8 +1011,8 @@ internal static List<Into> LoadListWithReferences<Into, From>(this IDbCommand db
10111011
foreach (var result in parentResults)
10121012
{
10131013
object childResult;
1014-
var pkValue = modelDef.PrimaryKey.GetValue(result);
1015-
if (map.TryGetValue(pkValue, out childResult))
1014+
var fkValue = refSelf.GetValue(result);
1015+
if (map.TryGetValue(fkValue, out childResult))
10161016
{
10171017
fieldDef.SetValueFn(result, childResult);
10181018
}

tests/ServiceStack.OrmLite.Tests/LoadReferencesTests.cs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ public class SelfCustomer
144144
public int Id { get; set; }
145145
public string Name { get; set; }
146146

147-
public int SelfCustomerAddressId { get; set; }
147+
public int? SelfCustomerAddressId { get; set; }
148148

149149
[Reference]
150150
public SelfCustomerAddress PrimaryAddress { get; set; }
@@ -434,13 +434,15 @@ public void Can_Save_and_Load_Self_References()
434434
},
435435
};
436436

437+
db.Save(new SelfCustomer { Name = "Dummy Incrementer" });
438+
437439
db.Save(customer);
438440

439441
Assert.That(customer.Id, Is.GreaterThan(0));
440442
Assert.That(customer.SelfCustomerAddressId, Is.EqualTo(0));
441443

442444
db.SaveReferences(customer, customer.PrimaryAddress);
443-
Assert.That(customer.SelfCustomerAddressId, Is.EqualTo(customer.Id));
445+
Assert.That(customer.SelfCustomerAddressId, Is.EqualTo(customer.PrimaryAddress.Id));
444446

445447
var dbCustomer = db.LoadSingleById<SelfCustomer>(customer.Id);
446448
Assert.That(dbCustomer.PrimaryAddress, Is.Not.Null);
@@ -457,8 +459,8 @@ public void Can_Save_and_Load_Self_References()
457459
},
458460
};
459461

460-
db.Save(customer, references:true);
461-
Assert.That(customer.SelfCustomerAddressId, Is.EqualTo(customer.Id));
462+
db.Save(customer, references: true);
463+
Assert.That(customer.SelfCustomerAddressId, Is.EqualTo(customer.PrimaryAddress.Id));
462464

463465
dbCustomer = db.LoadSingleById<SelfCustomer>(customer.Id);
464466
Assert.That(dbCustomer.PrimaryAddress, Is.Not.Null);
@@ -489,10 +491,12 @@ public void Can_load_list_of_self_references()
489491
},
490492
};
491493

492-
customers.Each(x =>
493-
db.Save(x, references:true));
494+
db.Save(new SelfCustomer { Name = "Dummy Incrementer" });
495+
496+
customers.Each(x =>
497+
db.Save(x, references: true));
494498

495-
var results = db.LoadSelect<SelfCustomer>();
499+
var results = db.LoadSelect<SelfCustomer>(q => q.SelfCustomerAddressId != null);
496500
Assert.That(results.Count, Is.EqualTo(2));
497501
Assert.That(results.All(x => x.PrimaryAddress != null));
498502

0 commit comments

Comments
 (0)