void ConvertSchema(string typeName) { var typeNames = new HashSet <string> { typeName }; var contextMemberNames = new HashSet <string> { typeName }; foreach (var table in _schema.Tables) { table.TypeName = GetName(typeNames, table.TypeName); { var contextMemberName = table.TypeName; if (!_cxInfo.DynamicSchemaOptions.NoPluralization) { contextMemberName = Pluralization.ToPlural(contextMemberName); } _contextMembers[table] = GetName(contextMemberNames, contextMemberName); } var classMemberNames = new HashSet <string> { table.TypeName }; foreach (var column in table.Columns) { //Debug.WriteLine($"{table.TypeName}.{column.MemberName}"); column.MemberName = GetName(classMemberNames, column.MemberName); } foreach (var key in table.ForeignKeys) { if (!_cxInfo.DynamicSchemaOptions.NoPluralization) { key.MemberName = key.AssociationType == AssociationType.OneToMany ? Pluralization.ToPlural(key.MemberName) : Pluralization.ToSingular(key.MemberName); } key.MemberName = GetName(classMemberNames, key.MemberName); } } foreach (var procedure in _schema.Procedures) { procedure.MemberName = GetName(typeNames, procedure.MemberName); if (procedure.ResultTable != null && !_contextMembers.ContainsKey(procedure.ResultTable)) { procedure.ResultTable.TypeName = GetName(typeNames, procedure.ResultTable.TypeName); var classMemberNames = new HashSet <string> { procedure.ResultTable.TypeName }; foreach (var column in procedure.ResultTable.Columns) { var memberName = column.MemberName.IsNullOrWhiteSpace() ? "Column" : column.MemberName; column.MemberName = GetName(classMemberNames, memberName); } } } }
void ConvertSchema(string typeName) { var typeNames = new HashSet <string> { typeName }; var contextMemberNames = new HashSet <string> { typeName }; foreach (var table in _schema.Tables) { table.TypeName = GetName(typeNames, table.TypeName); { var contextMemberName = table.TypeName; if (!_cxInfo.DynamicSchemaOptions.NoPluralization) { contextMemberName = Pluralization.ToPlural(contextMemberName); } _contextMembers[table] = GetName(contextMemberNames, contextMemberName); } var classMemberNames = new HashSet <string> { table.TypeName }; foreach (var column in table.Columns) { //Debug.WriteLine($"{table.TypeName}.{column.MemberName}"); column.MemberName = GetName(classMemberNames, column.MemberName, !_cxInfo.DynamicSchemaOptions.NoCapitalization); } foreach (var key in table.ForeignKeys) { if (!_cxInfo.DynamicSchemaOptions.NoPluralization) { key.MemberName = key.AssociationType == AssociationType.OneToMany ? Pluralization.ToPlural(key.MemberName) : Pluralization.ToSingular(key.MemberName); } key.MemberName = GetName(classMemberNames, key.MemberName); } } foreach (var procedure in _schema.Procedures) { // migrate https://github.com/linq2db/linq2db/pull/1905 if (!procedure.IsFunction && ProviderName == LinqToDB.ProviderName.SqlServer) { // sql server procedures always have integer return parameter var name = "@returnValue"; var cnt = 0; while (procedure.Parameters.Any(_ => _.ParameterName == name)) { name = $"@returnValue{cnt++}"; } procedure.Parameters.Add(new ParameterSchema() { SchemaName = name, ParameterName = name, IsResult = true, DataType = DataType.Int32, SystemType = typeof(int), SchemaType = "int", ParameterType = "int", ProviderSpecificType = "int" }); } procedure.MemberName = GetName(typeNames, procedure.MemberName); if (procedure.ResultTable != null && !_contextMembers.ContainsKey(procedure.ResultTable)) { procedure.ResultTable.TypeName = GetName(typeNames, procedure.ResultTable.TypeName); var classMemberNames = new HashSet <string> { procedure.ResultTable.TypeName }; foreach (var column in procedure.ResultTable.Columns) { var memberName = column.MemberName.IsNullOrWhiteSpace() ? "Column" : column.MemberName; column.MemberName = GetName(classMemberNames, memberName); } } foreach (var parameter in procedure.Parameters) { parameter.ParameterName = ConvertToCompilable(parameter.ParameterName, false); } } }