protected DomainEntity() { entityMetadata = new Lazy <DomainEntityMetadata>(() => DomainModelMetadataRegistry.GetEntityMetadta(this.GetType())); ChangeTracker = new ChangeTracker(this); ChangeTracker.BeforePropertyChanged += (object sender, PropertyChangedExtendedEventArgs e) => OnBeforePropertyChanged(e.PropertyName, e.Before, e.After); ChangeTracker.AfterPropertyChanged += (object sender, PropertyChangedExtendedEventArgs e) => OnAfterPropertyChanged(e.PropertyName, e.Before, e.After); }
public DomainValueObjectMetadata GetEntityMetadata() { if (entityMetadata == null) { entityMetadata = DomainModelMetadataRegistry.GetValueObjectMetadata(this.GetType()); } return(entityMetadata); }
public DomainModelMetadata Build() { var scannedTypes = new HashSet <Type>(); var rootDescriptors = entityModelBuilderConfigurations.Values .Where(x => x.IsRoot) .Select(x => ScanEntityTypeRecursive(x.EntityType, scannedTypes)) .ToList(); var entityModelBuilders = rootDescriptors .SelectManyRecursive(x => x.AggregateDescriptors) .Select(x => new EntityModelBuilder( descriptor: x, configuration: entityModelBuilderConfigurations.TryGetValue(x.Type, out var entityModelBuilder) ? entityModelBuilder : null )) .ToList(); var valueTypeModelBuilders = rootDescriptors .SelectMany(x => x.ValueTypeDescriptors) .SelectManyRecursive(x => x.ValueTypeDescriptors) .Select(x => new ValueObjectModelBuilder( descriptor: x, configuration: entityModelBuilderConfigurations.TryGetValue(x.Type, out var entityModelBuilder) ? entityModelBuilder : null )) .ToList(); var domainModel = new DomainModelMetadata( modelName, entityModelBuilders.Select(x => x.Build()).ToList(), valueTypeModelBuilders.Select(x => x.Build()).ToList() ); DomainModelMetadataRegistry.RegisterModel(domainModel); return(domainModel); }