public void AddNameSpace() { _nameSpaceBuilderUtil.WithName($"Domain.{_domainClass.Name}s").WithList(); foreach (var childHookMethod in _domainClass.ChildHookMethods) { var domainClassName = _nameBuilderUtil.GetClassName(childHookMethod, _domainClass.Properties, _domainClass.ListProperties); _nameSpaceBuilderUtil.WithDomainEntityNameSpace(domainClassName); } foreach (var listProperty in _domainClass.ListProperties) { _nameSpaceBuilderUtil.WithDomainEntityNameSpace(listProperty.Type); } _nameSpace = _nameSpaceBuilderUtil.Build(); }
public CodeNamespace Build(List <DomainClass> domainClasses) { _nameSpaceBuilderUtil.WithName($"{_nameSpace}").WithDomain().WithEfCore(); foreach (var domainClass in domainClasses) { _nameSpaceBuilderUtil.WithDomainEntityNameSpace(domainClass.Name); } var nameSpace = _nameSpaceBuilderUtil.Build(); var eventStore = _classBuilderUtil.Build("EventStoreContext"); eventStore.BaseTypes.Add(new CodeTypeReference("DbContext")); var properties = new List <Property>(); properties.Add(new Property { Name = "EventHistory", Type = $"DbSet<{new DomainEventBaseClass().Name}>" }); foreach (var domainClass in domainClasses) { properties.Add(new Property { Name = $"{domainClass.Name}s", Type = $"DbSet<{domainClass.Name}>" }); foreach (var method in domainClass.Methods) { properties.Add(new Property { Name = $"{_nameBuilderUtil.EventName(domainClass, method)}s", Type = $"DbSet<{_nameBuilderUtil.EventName(domainClass, method)}>" }); } foreach (var method in domainClass.CreateMethods) { properties.Add(new Property { Name = $"{_nameBuilderUtil.EventName(domainClass, method)}s", Type = $"DbSet<{_nameBuilderUtil.EventName(domainClass, method)}>" }); } } _propertyBuilderUtil.Build(eventStore, properties); var codeConstructor = _constructorBuilderUtil.BuildPublicWithBaseCall(new List <Property>(), new List <Property> { new Property { Name = "options", Type = "DbContextOptions<EventStoreContext>" } }); eventStore.Members.Add(codeConstructor); nameSpace.Types.Add(eventStore); return(nameSpace); }