internal override void AddMethods(XmlEntity entityContext, ITobascoContext tobascoContext) { var entityParameter = entityContext.Name.GetParameterName(); Builder.StartMethod("public", entityContext.Name, "Save", entityContext.Name.GetObjectWithParamaterName()); foreach (var child in entityContext.GetChilds()) { Builder.AddMethodBody($"if (var {entityContext.Name}.{child.Name} != null)"); Builder.AddMethodBody("{"); Builder.AppendLine($"{entityContext.Name}.{child.Name} = {child.Name.GetFieldName()}.Save({child.Name});", Indent.ForEachBody); Builder.AddMethodBody("}"); } Builder.AddMethodBody($"{entityParameter} = _genericRepository.Save({entityParameter});"); foreach (var childCollection in entityContext.GetChildCollections()) { Builder.AddMethodBody($"foreach (var itemToSave = {entityContext.Name}.{childCollection.Name})"); Builder.AddMethodBody("{"); Builder.AppendLine($"itemToSave.{entityContext.Name}Id = {entityContext.Name.GetObjectWithParamaterName()};", Indent.ForEachBody); Builder.AppendLine($"{childCollection.Name.GetParameterName()}.Save(itemToSave);", Indent.ForEachBody); Builder.AddMethodBody("}"); } Builder.AddMethodBody($"return {entityParameter};"); Builder.EndMethod(); Builder.AppendLine(string.Empty); Builder.StartMethod("public", entityContext.Name, "GetById", "long id"); Builder.AddMethodBody("return _genericRepository.GetById(id);"); Builder.EndMethod(); }
protected override void AddTable(XmlEntity xmlEntity, ITobascoContext tobascoContext) { Builder.StartTable(xmlEntity.Name); Builder.AddTableBody("[Id]", "bigint IDENTITY(1,1)", true); Builder.Append <SqlStringBuilder>(",").AddTableBody("[RowVersion]", "rowversion", true); foreach (var prop in xmlEntity.Properties.Where(x => x.PropertyType.Name != Enums.Datatype.ChildCollection)) { Builder.Append <SqlStringBuilder>(",").AddTableBody(prop.Name, prop.PropertyType.GetSqlDataType(), prop.Required); } Builder.Append <SqlStringBuilder>(",").AddModifiedByTableDefinition(); Builder.Append <SqlStringBuilder>(",").AddModifiedByTableConstraint(); Builder.Append <SqlStringBuilder>(",").AddModifiedOnTableDefinition(); Builder.Append <SqlStringBuilder>(",").AddModifiedOnTableConstraint(); Builder.Append <SqlStringBuilder>(",").AddModifiedOnUTCTableDefinition(); Builder.Append <SqlStringBuilder>(",").AddModifiedOnUTCTableConstraint(); Builder.Append <SqlStringBuilder>(",").AppendLine($"CONSTRAINT [PK_{xmlEntity.Name}] PRIMARY KEY CLUSTERED (Id ASC)"); foreach (var child in xmlEntity.GetChilds()) { Builder.Append <SqlStringBuilder>(",").AppendLine($"CONSTRAINT [FK_{xmlEntity.Name}_{child.Name}] PRIMARY KEY CLUSTERED (Id ASC)"); } Builder.EndTable(); }
internal override void AddConstructor(XmlEntity entityContext, ITobascoContext tobascoContext) { var childs = entityContext.GetChilds().Concat(entityContext.GetChildCollections()); Builder.StartConstructor(entityContext.Name, GetConstructorParameters(childs).ToArray()); Builder.AddConstructorBody("_genericRepository = genericRepository;"); foreach (var child in childs) { Builder.AddConstructorBody($"{child.Name.GetFieldName()} = {child.Name.GetParameterName()};"); } Builder.EndConstructor(); IEnumerable <string> GetConstructorParameters(IEnumerable <XmlProperty> childProperties) { var parameters = new List <string> { "IGenericRepository genericRepository" }; parameters.AddRange(childProperties.Select(x => $"I{x.Name}Repository {x.Name.GetParameterName()}")); return(parameters); } }