【发布时间】:2022-11-11 06:28:43
【问题描述】:
我在使用 Eventflow 的 .NET 6 应用程序上工作。我想阅读我的活动。
事件在表中EventEntity
你有什么主意吗 ?我们可以为这个表创建一个 ReadModel 吗?有什么方法可以从此表中获取数据吗?
【问题讨论】:
标签: .net domain-driven-design cqrs event-sourcing event-flow
我在使用 Eventflow 的 .NET 6 应用程序上工作。我想阅读我的活动。
事件在表中EventEntity
你有什么主意吗 ?我们可以为这个表创建一个 ReadModel 吗?有什么方法可以从此表中获取数据吗?
【问题讨论】:
标签: .net domain-driven-design cqrs event-sourcing event-flow
我找到了解决方案,这是我的代码:
public class EventStoreService : IEventStoreService
{
private readonly ILogger logger;
private readonly IEventPersistence eventPersistence;
private readonly IDbContextProvider<CartAppDbContext> _contextProvider;
public EventStoreService(ILogger<EventStoreService> aLogger, IDbContextProvider<CartAppDbContext> contextProvider, IEventPersistence eventPersistence)
{
this.logger = aLogger;
this.eventPersistence = eventPersistence;
this._contextProvider = contextProvider;
}
public async Task<AllCommittedEventsPage> GetLastEventsAsync(int pageSize)
{
try
{
using ( var context = _contextProvider.CreateContext() )
{
var entities = await context
.Set<EventEntity>()
.OrderByDescending(e => e.GlobalSequenceNumber)
.Take(pageSize)
.ToListAsync(CancellationToken.None)
.ConfigureAwait(false);
var nextPosition = entities.Any()
? entities.Max(e => e.GlobalSequenceNumber) + 1
: 0;
return new AllCommittedEventsPage(new GlobalPosition(nextPosition.ToString()), entities);
}
}
catch ( Exception ex )
{
this.logger.LogError("Récupération des évènements impossible : ", ex.Message);
throw;
}
}
}
【讨论】: