sample-dotnet-core-cqrs-api
sample-dotnet-core-cqrs-api copied to clipboard
Is it mandatory to use Guid for Id in entity or aggregate?
hello @kgrzybek ,
We have learned in the past that searching based on Guid primary key is less performant as compared to Sequential Integer/Long primary key.
Is there any work around so we can get the best of both worlds - leverage Outbox for gurantee and search friendly primary key? Is it possible to do like this in command handler?
I am thinking to have 3 methods in UnitOfWork
- SaveChanges - to flush entity changes - explicit call in command handler and fetch Primary Key
- BeginTransaction - to start database transaction - from decorator
- Commit - to commit transaction - from decorator
REference: https://entityframeworkcore.com/saving-data-transaction Commit method can Invoke DomainEventDispatcher which in turn can record DomainEventNotifications in Outbox table.
Open for other ideas?
@maulik-modi
Is it mandatory to use Guid for Id in entity or aggregate?
no, it's not. I'd rather say that using Guid is simplifying work with UoW within DDD
check out my pet project for generating strongly typed entity's id before saving changes into DB https://github.com/beylkhanovdamir/StronglyTypedIdentity