Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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);
        }