Edition 0 Updated to asp. Net core 0



Yüklə 11,82 Mb.
Pdf görüntüsü
səhifə202/288
tarix12.07.2023
ölçüsü11,82 Mb.
#136458
1   ...   198   199   200   201   202   203   204   205   ...   288
public
abstract
class
Entity 

//...
private
List _domainEvents; 
public
List DomainEvents => _domainEvents; 
public
void
AddDomainEvent
(INotification eventItem) 

_domainEvents = _domainEvents ?? 
new
List(); 
_domainEvents.
Add
(eventItem); 

public
void
RemoveDomainEvent
(INotification eventItem) 

_domainEvents?.
Remove
(eventItem); 

//... Additional code

When you want to raise an event, you just add it to the event collection from code at any method of 
the aggregate-root entity. 
The following code, part of the 
Order aggregate-root at eShopOnContainers
, shows an example: 
var
orderStartedDomainEvent = 
new
OrderStartedDomainEvent
(
this

//Order object
cardTypeId, cardNumber, 
cardSecurityNumber, 
cardHolderName, 
cardExpiration); 
this
.
AddDomainEvent
(orderStartedDomainEvent); 


234 
CHAPTER 6 | Tackle Business Complexity in a Microservice with DDD and CQRS Patterns 
Notice that the only thing that the AddDomainEvent method is doing is adding an event to the list. 
No event is dispatched yet, and no event handler is invoked yet. 
You actually want to dispatch the events later on, when you commit the transaction to the database. If 
you are using Entity Framework Core, that means in the SaveChanges method of your EF DbContext
as in the following code: 
// EF Core DbContext
public
class
OrderingContext : DbContext, IUnitOfWork 

// ...

Yüklə 11,82 Mb.

Dostları ilə paylaş:
1   ...   198   199   200   201   202   203   204   205   ...   288




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin