Skip to content

Commit 145a84e

Browse files
committed
fix: 修复 领域对象跟踪获取值为空的问题
1 parent debd8f0 commit 145a84e

File tree

4 files changed

+14
-4
lines changed

4 files changed

+14
-4
lines changed

framework/src/Bing.Ddd.Domain/Bing/Domain/ChangeTracking/ChangeTrackingContext.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,14 @@ public void Add<TObject>(IChangeTrackable<TObject> leftObj, TObject rightObj) wh
7575
/// <typeparam name="TProperty">属性类型</typeparam>
7676
/// <typeparam name="TValue">值类型</typeparam>
7777
/// <param name="expression">属性表达式。范例:t => t.Name</param>
78+
/// <param name="obj">领域对象</param>
7879
/// <param name="newValue">新值。范例:newEntity.Name</param>
79-
public void Add<TObject, TProperty, TValue>(Expression<Func<TObject, TProperty>> expression, TValue newValue) where TObject : IDomainObject
80+
public void Add<TObject, TProperty, TValue>(Expression<Func<TObject, TProperty>> expression, TObject obj, TValue newValue) where TObject : IDomainObject
8081
{
8182
var member = Lambdas.GetMemberExpression(expression);
8283
var name = Lambdas.GetMemberName(member);
8384
var desc = Reflection.Reflections.GetDisplayNameOrDescription(member.Member);
84-
var value = Lambdas.GetValue(expression);
85+
var value = member.Member.GetPropertyValue(obj);
8586
Add(name, desc, Conv.To<TValue>(value), newValue);
8687
}
8788

framework/src/Bing.Ddd.Domain/Bing/Domain/Entities/DomainObjectBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ protected virtual void AddChanges(TObject newObj) { }
9191
/// <typeparam name="TValue">值类型</typeparam>
9292
/// <param name="expression">属性表达式。范例:t => t.Name</param>
9393
/// <param name="newValue">新值。范例:newEntity.Name</param>
94-
protected void AddChange<TProperty, TValue>(Expression<Func<TObject, TProperty>> expression, TValue newValue) => _changeTrackingContext.Add(expression, newValue);
94+
protected void AddChange<TProperty, TValue>(Expression<Func<TObject, TProperty>> expression, TValue newValue) => _changeTrackingContext.Add(expression, AssignableType(this), newValue);
9595

9696
/// <summary>
9797
/// 添加变更

framework/tests/Bing.Tests/Applications/CrudServiceTest.Save.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public async Task Test_SaveAsync_Add()
126126
[Fact]
127127
public async Task Test_SaveAsync_Update()
128128
{
129-
_repository.FindAsync(_id).Returns(t => new EntitySample(_id));
129+
_repository.FindAsync(_id).Returns(t => new EntitySample(_id) { Name = "a" });
130130
await _service.SaveAsync(new DtoSample { Id = _id.ToString(), Name = "b" });
131131
await _repository.DidNotReceive().AddAsync(Arg.Any<EntitySample>());
132132
await _repository.Received().UpdateAsync(Arg.Is<EntitySample>(t => t.Name == "b"));

tests/Bing.Tests.Samples/Bing/Tests/Samples/RepositorySample.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,15 @@ public EntitySample(Guid id) : base(id) { }
4242
/// </summary>
4343
[IgnoreMap]
4444
public string IgnoreValue { get; set; }
45+
46+
/// <summary>
47+
/// 添加变更列表
48+
/// </summary>
49+
protected override void AddChanges(EntitySample other)
50+
{
51+
AddChange(x => x.Id, other.Id);
52+
AddChange(x => x.Name, other.Name);
53+
}
4554
}
4655

4756
/// <summary>

0 commit comments

Comments
 (0)