مدیریت مباحث همزمانی مرتبط با یک Rich Domain Model با استفاده از EFCore و الگوی Aggregate
نویسنده: سالار ربال
تاریخ: ۱۳۹۹/۰۲/۲۶ ۲۳:۵۳
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
In summary, the most important issues here are:
public class AggregateRootBase : Entity, IAggregateRoot
{
private int _versionId;
public void IncreaseVersion()
{
_versionId++;
}
} internal sealed class OrderEntityTypeConfiguration : IEntityTypeConfiguration<Order>
{
public void Configure(EntityTypeBuilder<Order> builder)
{
builder.Property("_versionId").HasColumnName("VersionId").IsConcurrencyToken();
//...
}
} var order = await _ordersContext.Orders.FindAsync(orderId);
order.AddOrderLine(request.ProductCode);
var domainEvents = DomainEventsHelper.GetAllDomainEvents(order);
if (domainEvents.Any())
{
order.IncreaseVersion();
}
await _ordersContext.SaveChangesAsync();