Skip to content

Commit dac01c9

Browse files
committed
CHange result type of CalculateChangedValues()
1 parent d164165 commit dac01c9

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

Extensions/Xtensive.Orm.Tracking/Internals/TrackingItem.cs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ internal sealed class TrackingItem : ITrackingItem
2424

2525
public TrackingItemState State { get; private set; }
2626

27-
public IReadOnlyList<ChangedValue> ChangedValues => cachedChangedValues ??= CalculateChangedValues().ToList().AsReadOnly();
27+
public IReadOnlyList<ChangedValue> ChangedValues => cachedChangedValues ??= CalculateChangedValues();
2828

2929
public void MergeWith(TrackingItem source)
3030
{
@@ -47,29 +47,33 @@ public void MergeWith(TrackingItem source)
4747
State = source.State;
4848
}
4949

50-
private IEnumerable<ChangedValue> CalculateChangedValues()
50+
private IReadOnlyList<ChangedValue> CalculateChangedValues()
5151
{
5252
var originalValues = RawData.Origin;
5353
var changedValues = RawData.Difference;
5454

55-
if (State==TrackingItemState.Created) {
55+
if (State == TrackingItemState.Created) {
5656
originalValues = null;
5757
changedValues = RawData.Origin;
5858
}
5959

60-
foreach (var field in Key.TypeInfo.Fields.Where(f => f.Column!=null)) {
60+
var changedValuesList = new List<ChangedValue>(Key.TypeInfo.Fields.Count);
61+
62+
foreach (var field in Key.TypeInfo.Fields.Where(f => f.Column != null)) {
6163
object origValue = null, changedValue = null;
6264
int fieldIndex = field.MappingInfo.Offset;
6365
TupleFieldState fieldState;
64-
if (originalValues!=null)
66+
if (originalValues != null)
6567
origValue = originalValues.GetValue(fieldIndex, out fieldState);
66-
if (changedValues!=null) {
68+
if (changedValues != null) {
6769
changedValue = changedValues.GetValue(fieldIndex, out fieldState);
6870
if (!fieldState.IsAvailable())
6971
continue;
7072
}
71-
yield return new ChangedValue(field, origValue, changedValue);
73+
changedValuesList.Add(new ChangedValue(field, origValue, changedValue));
7274
}
75+
76+
return changedValuesList.AsReadOnly();
7377
}
7478

7579
private void MergeWith(Tuple difference)

0 commit comments

Comments
 (0)