From debd8f07cf9e0b61c964676f4b4cf1166894a6ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jian=E7=8E=84=E5=86=B0?= Date: Thu, 24 Feb 2022 00:10:56 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20=E5=AE=89=E5=85=A8=E8=BE=93=E5=87=BA?= =?UTF-8?q?EF=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Bing.Datas.EntityFramework/Logs/EfLog.cs | 34 +++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/framework/src/Bing.Datas.EntityFramework/Logs/EfLog.cs b/framework/src/Bing.Datas.EntityFramework/Logs/EfLog.cs index 4ae24bfa..017081b7 100644 --- a/framework/src/Bing.Datas.EntityFramework/Logs/EfLog.cs +++ b/framework/src/Bing.Datas.EntityFramework/Logs/EfLog.cs @@ -7,6 +7,7 @@ using Bing.Extensions; using Bing.Helpers; using Bing.Logs; +using Bing.Reflection; using Bing.Uow; using Microsoft.EntityFrameworkCore.Diagnostics; using Microsoft.Extensions.Logging; @@ -37,6 +38,7 @@ public class EfLog : ILogger public void Log(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func formatter) { + var success = false; var config = GetConfig(); var log = GetUnitOfWork()?.Log; if (log == null) @@ -46,13 +48,31 @@ public void Log(LogLevel logLevel, EventId eventId, TState state, Except if (!string.IsNullOrWhiteSpace(GetUnitOfWork().TraceId)) log.Tag(GetUnitOfWork()?.TraceId); log.Tag(TraceLogName); - log - .Caption($"执行EF操作:{formatter(state, exception)}") - .Content($"工作单元跟踪号:{GetUnitOfWork()?.TraceId}") - .Content($"事件ID:{eventId.Id}") - .Content($"事件名称:{eventId.Name}"); - AddContent(state, config, log); - log.Exception(exception).Trace(); + var caption = string.Empty; + try + { + log + .Content($"工作单元跟踪号:{GetUnitOfWork()?.TraceId}") + .Content($"事件ID:{eventId.Id}") + .Content($"事件名称:{eventId.Name}"); + AddContent(state, config, log); + log.Exception(exception); + caption = formatter(state, exception); + success = true; + } + catch (Exception e) + { + InvokeHelper.OnInvokeException?.Invoke(e); + success = false; + } + finally + { + log.Caption($"执行EF操作:{caption}"); + if (success) + log.Trace(); + else + log.Error(); + } } /// From 145a84e147a6c301622824ec166a8d26a931cb83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jian=E7=8E=84=E5=86=B0?= Date: Tue, 15 Mar 2022 11:09:12 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20=E9=A2=86?= =?UTF-8?q?=E5=9F=9F=E5=AF=B9=E8=B1=A1=E8=B7=9F=E8=B8=AA=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=80=BC=E4=B8=BA=E7=A9=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Bing/Domain/ChangeTracking/ChangeTrackingContext.cs | 5 +++-- .../Bing/Domain/Entities/DomainObjectBase.cs | 2 +- .../Bing.Tests/Applications/CrudServiceTest.Save.cs | 2 +- .../Bing/Tests/Samples/RepositorySample.cs | 9 +++++++++ 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/framework/src/Bing.Ddd.Domain/Bing/Domain/ChangeTracking/ChangeTrackingContext.cs b/framework/src/Bing.Ddd.Domain/Bing/Domain/ChangeTracking/ChangeTrackingContext.cs index 86dfe234..9f686590 100644 --- a/framework/src/Bing.Ddd.Domain/Bing/Domain/ChangeTracking/ChangeTrackingContext.cs +++ b/framework/src/Bing.Ddd.Domain/Bing/Domain/ChangeTracking/ChangeTrackingContext.cs @@ -75,13 +75,14 @@ public void Add(IChangeTrackable leftObj, TObject rightObj) wh /// 属性类型 /// 值类型 /// 属性表达式。范例:t => t.Name + /// 领域对象 /// 新值。范例:newEntity.Name - public void Add(Expression> expression, TValue newValue) where TObject : IDomainObject + public void Add(Expression> expression, TObject obj, TValue newValue) where TObject : IDomainObject { var member = Lambdas.GetMemberExpression(expression); var name = Lambdas.GetMemberName(member); var desc = Reflection.Reflections.GetDisplayNameOrDescription(member.Member); - var value = Lambdas.GetValue(expression); + var value = member.Member.GetPropertyValue(obj); Add(name, desc, Conv.To(value), newValue); } diff --git a/framework/src/Bing.Ddd.Domain/Bing/Domain/Entities/DomainObjectBase.cs b/framework/src/Bing.Ddd.Domain/Bing/Domain/Entities/DomainObjectBase.cs index 3a967a48..9f93e23f 100644 --- a/framework/src/Bing.Ddd.Domain/Bing/Domain/Entities/DomainObjectBase.cs +++ b/framework/src/Bing.Ddd.Domain/Bing/Domain/Entities/DomainObjectBase.cs @@ -91,7 +91,7 @@ protected virtual void AddChanges(TObject newObj) { } /// 值类型 /// 属性表达式。范例:t => t.Name /// 新值。范例:newEntity.Name - protected void AddChange(Expression> expression, TValue newValue) => _changeTrackingContext.Add(expression, newValue); + protected void AddChange(Expression> expression, TValue newValue) => _changeTrackingContext.Add(expression, AssignableType(this), newValue); /// /// 添加变更 diff --git a/framework/tests/Bing.Tests/Applications/CrudServiceTest.Save.cs b/framework/tests/Bing.Tests/Applications/CrudServiceTest.Save.cs index b8b320c1..7d7a837a 100644 --- a/framework/tests/Bing.Tests/Applications/CrudServiceTest.Save.cs +++ b/framework/tests/Bing.Tests/Applications/CrudServiceTest.Save.cs @@ -126,7 +126,7 @@ public async Task Test_SaveAsync_Add() [Fact] public async Task Test_SaveAsync_Update() { - _repository.FindAsync(_id).Returns(t => new EntitySample(_id)); + _repository.FindAsync(_id).Returns(t => new EntitySample(_id) { Name = "a" }); await _service.SaveAsync(new DtoSample { Id = _id.ToString(), Name = "b" }); await _repository.DidNotReceive().AddAsync(Arg.Any()); await _repository.Received().UpdateAsync(Arg.Is(t => t.Name == "b")); diff --git a/tests/Bing.Tests.Samples/Bing/Tests/Samples/RepositorySample.cs b/tests/Bing.Tests.Samples/Bing/Tests/Samples/RepositorySample.cs index c67d32dc..85be6733 100644 --- a/tests/Bing.Tests.Samples/Bing/Tests/Samples/RepositorySample.cs +++ b/tests/Bing.Tests.Samples/Bing/Tests/Samples/RepositorySample.cs @@ -42,6 +42,15 @@ public EntitySample(Guid id) : base(id) { } /// [IgnoreMap] public string IgnoreValue { get; set; } + + /// + /// 添加变更列表 + /// + protected override void AddChanges(EntitySample other) + { + AddChange(x => x.Id, other.Id); + AddChange(x => x.Name, other.Name); + } } /// From 0b844ca022884aefe2ec1c6a3db4ee369387f27d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jian=E7=8E=84=E5=86=B0?= Date: Tue, 15 Mar 2022 11:29:40 +0800 Subject: [PATCH 3/3] =?UTF-8?q?publish:=20=E5=8F=91=E5=B8=83=202.2.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- version.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.props b/version.props index 104778dd..59fd75f8 100644 --- a/version.props +++ b/version.props @@ -2,7 +2,7 @@ 2 2 - 2 + 3 20220104-1 $(VersionMajor).$(VersionMinor).$(VersionPatch)