From 537e9ad84f496d75c53d0d2729b7eb466fe734da Mon Sep 17 00:00:00 2001 From: lorcQc <34991704+lorcQc@users.noreply.github.com> Date: Sat, 16 Sep 2023 14:41:08 -0400 Subject: [PATCH] Add complex property support to migration and relational model + Target .NET 8 --- .../CodeTemplates/EFCore/DbContext.t4 | 2 +- ...sualBasicRuntimeAnnotationCodeGenerator.vb | 14 + .../Design/Internal/VisualBasicHelper.vb | 6 +- ...sualBasicRuntimeAnnotationCodeGenerator.vb | 409 ++-- ...sualBasicRuntimeAnnotationCodeGenerator.vb | 37 + EFCore.VisualBasic/EFCore.VisualBasic.vbproj | 10 +- .../Design/VisualBasicSnapshotGenerator.vb | 144 +- .../Internal/VisualBasicDbContextGenerator.tt | 2 +- .../Internal/VisualBasicDbContextGenerator.vb | 4 +- .../VisualBasicEntityTypeGenerator.vb | 2 +- .../VisualBasicRuntimeModelCodeGenerator.vb | 293 ++- .../{net6.0 => net8.0}/EFCoreVisualBasic.vb | 0 .../EntityFrameworkCore.VisualBasic.targets | 0 Sandbox/Sandbox.vbproj | 12 +- .../EFCore.Design.Tests.Shared.csproj | 6 +- .../Internal/MyJsonGuidReaderWriter.cs | 2 +- .../EFCore.VisualBasic.Test.vbproj | 24 +- ...ualBasicMigrationOperationGeneratorTest.vb | 3 +- .../VisualBasicMigrationsGeneratorTests.vb | 179 +- .../VisualBasicEntityTypeGeneratorTest.vb | 4 +- ...isualBasicRuntimeModelCodeGeneratorTest.vb | 1705 ++++++++++++++--- .../TestUtilities/BuildSource.vb | 11 +- .../Metadata/RelationalModelTest.vb | 14 +- 23 files changed, 2199 insertions(+), 684 deletions(-) rename EFCore.VisualBasic/build/{net6.0 => net8.0}/EFCoreVisualBasic.vb (100%) rename EFCore.VisualBasic/build/{net6.0 => net8.0}/EntityFrameworkCore.VisualBasic.targets (100%) diff --git a/EFCore.VisualBasic.Templates/templates/ef-templates/CodeTemplates/EFCore/DbContext.t4 b/EFCore.VisualBasic.Templates/templates/ef-templates/CodeTemplates/EFCore/DbContext.t4 index 376dee3..af6c776 100644 --- a/EFCore.VisualBasic.Templates/templates/ef-templates/CodeTemplates/EFCore/DbContext.t4 +++ b/EFCore.VisualBasic.Templates/templates/ef-templates/CodeTemplates/EFCore/DbContext.t4 @@ -82,7 +82,7 @@ Namespace <#= FileNamespaceIdentifier #> if (!Options.SuppressConnectionStringWarning) { #> - 'TODO /!\ To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263. + 'TODO /!\ To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see https://go.microsoft.com/fwlink/?LinkId=723263. <# } #> diff --git a/EFCore.VisualBasic/Design/IVisualBasicRuntimeAnnotationCodeGenerator.vb b/EFCore.VisualBasic/Design/IVisualBasicRuntimeAnnotationCodeGenerator.vb index e88e39b..2652601 100644 --- a/EFCore.VisualBasic/Design/IVisualBasicRuntimeAnnotationCodeGenerator.vb +++ b/EFCore.VisualBasic/Design/IVisualBasicRuntimeAnnotationCodeGenerator.vb @@ -24,6 +24,20 @@ Namespace Design ''' Additional parameters used during code generation. Sub Generate(entityType As IEntityType, parameters As VisualBasicRuntimeAnnotationCodeGeneratorParameters) + ''' + ''' Generates code to create the given annotations. + ''' + ''' The entity type to which the annotations are applied. + ''' Additional parameters used during code generation. + Sub Generate(complexProperty As IComplexProperty, parameters As VisualBasicRuntimeAnnotationCodeGeneratorParameters) + + ''' + ''' Generates code to create the given annotations. + ''' + ''' The entity type to which the annotations are applied. + ''' Additional parameters used during code generation. + Sub Generate(complexType As IComplexType, parameters As VisualBasicRuntimeAnnotationCodeGeneratorParameters) + ''' ''' Generates code to create the given annotations. ''' diff --git a/EFCore.VisualBasic/Design/Internal/VisualBasicHelper.vb b/EFCore.VisualBasic/Design/Internal/VisualBasicHelper.vb index 23fbea1..bf2e295 100644 --- a/EFCore.VisualBasic/Design/Internal/VisualBasicHelper.vb +++ b/EFCore.VisualBasic/Design/Internal/VisualBasicHelper.vb @@ -871,7 +871,7 @@ Namespace Design.Internal builder As StringBuilder, Optional simple As Boolean = False) As Boolean - ' Only handle trivially simple cases for `new` and factory methods + ' Only handle trivially simple cases for `New` and factory methods Select Case exp.NodeType Case ExpressionType.NewArrayInit @@ -887,7 +887,9 @@ Namespace Design.Internal Return True - Case ExpressionType.Convert + Case ExpressionType.Convert, + ExpressionType.ConvertChecked + Dim unaryExpression = DirectCast(exp, UnaryExpression) If unaryExpression.Method?.Name <> "op_Implicit" Then diff --git a/EFCore.VisualBasic/Design/RuntimeAnnotationCodeGenerator/RelationalVisualBasicRuntimeAnnotationCodeGenerator.vb b/EFCore.VisualBasic/Design/RuntimeAnnotationCodeGenerator/RelationalVisualBasicRuntimeAnnotationCodeGenerator.vb index f8bf013..2230aae 100644 --- a/EFCore.VisualBasic/Design/RuntimeAnnotationCodeGenerator/RelationalVisualBasicRuntimeAnnotationCodeGenerator.vb +++ b/EFCore.VisualBasic/Design/RuntimeAnnotationCodeGenerator/RelationalVisualBasicRuntimeAnnotationCodeGenerator.vb @@ -99,15 +99,13 @@ Namespace Design.AnnotationCodeGeneratorProvider Private Sub Create(model As IRelationalModel, parameters As VisualBasicRuntimeAnnotationCodeGeneratorParameters) - Dim code = VBCode Dim mainBuilder = parameters.MainBuilder mainBuilder.AppendLine("Private Function CreateRelationalModel() As IRelationalModel") Using mainBuilder.Indent() - parameters.Namespaces.Add(GetType(RelationalModel).Namespace) parameters.Namespaces.Add(GetType(Microsoft.EntityFrameworkCore.RelationalModelExtensions).Namespace) - Dim relationalModelVariable = code.Identifier("relationalModel", parameters.ScopeVariables, capitalize:=False) + Dim relationalModelVariable = VBCode.Identifier("relationalModel", parameters.ScopeVariables, capitalize:=False) mainBuilder.AppendLine($"Dim {relationalModelVariable} As New RelationalModel({parameters.TargetName})") @@ -119,159 +117,168 @@ Namespace Design.AnnotationCodeGeneratorProvider AddNamespace(GetType(List(Of TableMapping)), parameters.Namespaces) - ' All the mappings below are added in a way that preserves the order For Each entityType In model.Model.GetEntityTypes() - Dim entityTypeVariable = code.Identifier(entityType.ShortName(), parameters.ScopeVariables, capitalize:=False) - parameters.MainBuilder. - AppendLine(). - AppendLine($"Dim {entityTypeVariable} = FindEntityType({code.Literal(entityType.Name)})") - - metadataVariables.Add(entityType, entityTypeVariable) - - For Each mapping In entityType.GetDefaultMappings() - Dim tableMappingsVariable = code.Identifier("defaultTableMappings", parameters.ScopeVariables, capitalize:=False) - mainBuilder. - AppendLine(). - AppendLine($"Dim {tableMappingsVariable} As New List(Of TableMappingBase(Of ColumnMappingBase))()"). - Append($"{entityTypeVariable}.SetRuntimeAnnotation("). - AppendLine($"{code.Literal(RelationalAnnotationNames.DefaultMappings)}, {tableMappingsVariable})") + CreateMappings(entityType, declaringVariable:=Nothing, metadataVariables, relationalModelParameters) + Next - Create(mapping, tableMappingsVariable, metadataVariables, relationalModelParameters) + For Each table In model.Tables + For Each foreignKey In table.ForeignKeyConstraints + Create(foreignKey, metadataVariables, parameters.Cloner.WithTargetName(metadataVariables(table)).Clone()) Next + Next - If entityType.GetTableMappings().Any() Then - Dim tableMappingsVariable = code.Identifier("tableMappings", parameters.ScopeVariables, capitalize:=False) - mainBuilder. - AppendLine(). - AppendLine($"Dim {tableMappingsVariable} As New List(Of TableMapping)()"). - Append($"{entityTypeVariable}.SetRuntimeAnnotation("). - AppendLine($"{code.Literal(RelationalAnnotationNames.TableMappings)}, {tableMappingsVariable})") - - For Each mapping In entityType.GetTableMappings() - Create(mapping, tableMappingsVariable, metadataVariables, relationalModelParameters) - Next - End If - - If entityType.GetViewMappings().Any() Then - Dim viewMappingsVariable = code.Identifier("viewMappings", parameters.ScopeVariables, capitalize:=False) - - mainBuilder. - AppendLine(). - AppendLine($"Dim {viewMappingsVariable} As New List(Of ViewMapping)()"). - Append($"{entityTypeVariable}.SetRuntimeAnnotation("). - AppendLine($"{code.Literal(RelationalAnnotationNames.ViewMappings)}, {viewMappingsVariable})") - - For Each mapping In entityType.GetViewMappings() - Create(mapping, viewMappingsVariable, metadataVariables, relationalModelParameters) - Next - End If - - If entityType.GetSqlQueryMappings().Any() Then - Dim sqlQueryMappingsVariable = code.Identifier("sqlQueryMappings", parameters.ScopeVariables, capitalize:=False) - - mainBuilder. - AppendLine(). - AppendLine($"Dim {sqlQueryMappingsVariable} As New List(Of SqlQueryMapping)()"). - Append($"{entityTypeVariable}.SetRuntimeAnnotation("). - AppendLine($"{code.Literal(RelationalAnnotationNames.SqlQueryMappings)}, {sqlQueryMappingsVariable})") - - For Each mapping In entityType.GetSqlQueryMappings() - Create(mapping, sqlQueryMappingsVariable, metadataVariables, relationalModelParameters) - Next - End If + For Each dbFunction In model.Model.GetDbFunctions() + If Not dbFunction.IsScalar Then Continue For + GetOrCreate(dbFunction.StoreFunction, metadataVariables, relationalModelParameters) + Next - If entityType.GetFunctionMappings().Any() Then - Dim functionMappingsVariable = code.Identifier("functionMappings", parameters.ScopeVariables, capitalize:=False) + CreateAnnotations(model, + AddressOf Generate, + relationalModelParameters) - mainBuilder. - AppendLine(). - AppendLine($"Dim {functionMappingsVariable} As New List(Of FunctionMapping)()"). - Append($"{entityTypeVariable}.SetRuntimeAnnotation("). - AppendLine($"{code.Literal(RelationalAnnotationNames.FunctionMappings)}, {functionMappingsVariable})") + mainBuilder. + AppendLine($"Return {relationalModelVariable}.MakeReadOnly()") + End Using - For Each mapping In entityType.GetFunctionMappings() - Create(mapping, functionMappingsVariable, metadataVariables, relationalModelParameters) - Next - End If + mainBuilder. + AppendLine("End Function") + End Sub - If entityType.GetDeleteStoredProcedureMappings().Any() Then - Dim deleteSprocMappingsVariable = code.Identifier("deleteSprocMappings", parameters.ScopeVariables, capitalize:=False) + Private Sub CreateMappings(typeBase As ITypeBase, + declaringVariable As String, + metadataVariables As Dictionary(Of IAnnotatable, String), + parameters As VisualBasicRuntimeAnnotationCodeGeneratorParameters) - mainBuilder. - AppendLine(). - AppendLine($"Dim {deleteSprocMappingsVariable} As New List(Of StoredProcedureMapping)()"). - Append($"{entityTypeVariable}.SetRuntimeAnnotation("). - AppendLine($"{code.Literal(RelationalAnnotationNames.DeleteStoredProcedureMappings)}, {deleteSprocMappingsVariable})") + Dim mainBuilder = parameters.MainBuilder - For Each mapping In entityType.GetDeleteStoredProcedureMappings() - Create(mapping, deleteSprocMappingsVariable, StoreObjectType.DeleteStoredProcedure, metadataVariables, relationalModelParameters) - Next - End If + Dim typeBaseVariable = VBCode.Identifier(typeBase.ShortName(), parameters.ScopeVariables, capitalize:=False) + metadataVariables.Add(typeBase, typeBaseVariable) + If TypeOf typeBase Is IComplexType Then + Dim complexType = DirectCast(typeBase, IComplexType) - If entityType.GetInsertStoredProcedureMappings().Any() Then - Dim insertSprocMappingsVariable = code.Identifier("insertSprocMappings", parameters.ScopeVariables, capitalize:=False) + mainBuilder. + AppendLine(). + Append($"Dim {typeBaseVariable} = "). + AppendLine($"{declaringVariable}.FindComplexProperty({VBCode.Literal(complexType.ComplexProperty.Name)}).ComplexType") + Else + mainBuilder. + AppendLine(). + AppendLine($"Dim {typeBaseVariable} = FindEntityType({VBCode.Literal(typeBase.Name)})") + End If - mainBuilder. - AppendLine(). - AppendLine($"Dim {insertSprocMappingsVariable} As New List(Of StoredProcedureMapping)()"). - Append($"{entityTypeVariable}.SetRuntimeAnnotation("). - AppendLine($"{code.Literal(RelationalAnnotationNames.InsertStoredProcedureMappings)}, {insertSprocMappingsVariable})") - - For Each mapping In entityType.GetInsertStoredProcedureMappings() - Create( - mapping, - insertSprocMappingsVariable, - StoreObjectType.InsertStoredProcedure, - metadataVariables, - relationalModelParameters) - Next - End If + ' All the mappings below are added in a way that preserves the order + For Each mapping In typeBase.GetDefaultMappings() + Dim tableMappingsVariable = VBCode.Identifier("defaultTableMappings", parameters.ScopeVariables, capitalize:=False) + mainBuilder. + AppendLine(). + AppendLine($"Dim {tableMappingsVariable} As New List(Of TableMappingBase(Of ColumnMappingBase))()"). + Append($"{typeBaseVariable}.SetRuntimeAnnotation("). + AppendLine($"{VBCode.Literal(RelationalAnnotationNames.DefaultMappings)}, {tableMappingsVariable})") + Create(mapping, tableMappingsVariable, metadataVariables, parameters) + Next - If entityType.GetUpdateStoredProcedureMappings().Any() Then - Dim updateSprocMappingsVariable = code.Identifier("updateSprocMappings", parameters.ScopeVariables, capitalize:=False) + If typeBase.GetTableMappings().Any() Then + Dim tableMappingsVariable = VBCode.Identifier("tableMappings", parameters.ScopeVariables, capitalize:=False) + mainBuilder. + AppendLine(). + AppendLine($"Dim {tableMappingsVariable} As New List(Of TableMapping)()"). + Append($"{typeBaseVariable}.SetRuntimeAnnotation("). + AppendLine($"{VBCode.Literal(RelationalAnnotationNames.TableMappings)}, {tableMappingsVariable})") + For Each mapping In typeBase.GetTableMappings() + Create(mapping, tableMappingsVariable, metadataVariables, parameters) + Next + End If - mainBuilder. - AppendLine(). - AppendLine($"Dim {updateSprocMappingsVariable} As New List(Of StoredProcedureMapping)()"). - Append($"{entityTypeVariable}.SetRuntimeAnnotation("). - AppendLine($"{code.Literal(RelationalAnnotationNames.UpdateStoredProcedureMappings)}, {updateSprocMappingsVariable})") - - For Each mapping In entityType.GetUpdateStoredProcedureMappings() - Create( - mapping, - updateSprocMappingsVariable, - StoreObjectType.UpdateStoredProcedure, - metadataVariables, - relationalModelParameters) - Next - End If + If typeBase.GetViewMappings().Any() Then + Dim viewMappingsVariable = VBCode.Identifier("viewMappings", parameters.ScopeVariables, capitalize:=False) + mainBuilder. + AppendLine(). + AppendLine($"Dim {viewMappingsVariable} As New List(Of ViewMapping)()"). + Append($"{typeBaseVariable}.SetRuntimeAnnotation("). + AppendLine($"{VBCode.Literal(RelationalAnnotationNames.ViewMappings)}, {viewMappingsVariable})") + For Each mapping In typeBase.GetViewMappings() + Create(mapping, viewMappingsVariable, metadataVariables, parameters) Next + End If - For Each Table In model.Tables - For Each foreignKey In Table.ForeignKeyConstraints - Create(foreignKey, metadataVariables, parameters.Cloner. - WithTargetName(metadataVariables(Table)). - Clone) - Next + If typeBase.GetSqlQueryMappings().Any() Then + Dim sqlQueryMappingsVariable = VBCode.Identifier("sqlQueryMappings", parameters.ScopeVariables, capitalize:=False) + mainBuilder. + AppendLine(). + AppendLine($"Dim {sqlQueryMappingsVariable} As New List(Of SqlQueryMapping)()"). + Append($"{typeBaseVariable}.SetRuntimeAnnotation("). + AppendLine($"{VBCode.Literal(RelationalAnnotationNames.SqlQueryMappings)}, {sqlQueryMappingsVariable})") + For Each mapping In typeBase.GetSqlQueryMappings() + Create(mapping, sqlQueryMappingsVariable, metadataVariables, parameters) Next + End If - For Each dbFunction In model.Model.GetDbFunctions() - If Not dbFunction.IsScalar Then - Continue For - End If + If typeBase.GetFunctionMappings().Any() Then + Dim functionMappingsVariable = VBCode.Identifier("functionMappings", parameters.ScopeVariables, capitalize:=False) + mainBuilder. + AppendLine(). + AppendLine($"Dim {functionMappingsVariable} As New List(Of FunctionMapping)()"). + Append($"{typeBaseVariable}.SetRuntimeAnnotation("). + AppendLine($"{VBCode.Literal(RelationalAnnotationNames.FunctionMappings)}, {functionMappingsVariable})") + For Each mapping In typeBase.GetFunctionMappings() + Create(mapping, functionMappingsVariable, metadataVariables, parameters) + Next + End If - GetOrCreate(dbFunction.StoreFunction, metadataVariables, relationalModelParameters) + If typeBase.GetDeleteStoredProcedureMappings().Any() Then + Dim deleteSprocMappingsVariable = VBCode.Identifier("deleteSprocMappings", parameters.ScopeVariables, capitalize:=False) + mainBuilder. + AppendLine(). + AppendLine($"Dim {deleteSprocMappingsVariable} As New List(Of StoredProcedureMapping)()"). + Append($"{typeBaseVariable}.SetRuntimeAnnotation("). + AppendLine($"{VBCode.Literal(RelationalAnnotationNames.DeleteStoredProcedureMappings)}, {deleteSprocMappingsVariable})") + For Each mapping In typeBase.GetDeleteStoredProcedureMappings() + Create( + mapping, + deleteSprocMappingsVariable, + StoreObjectType.DeleteStoredProcedure, + metadataVariables, + parameters) Next + End If - CreateAnnotations( - model, - AddressOf Generate, - relationalModelParameters) + If typeBase.GetInsertStoredProcedureMappings().Any() Then + Dim insertSprocMappingsVariable = VBCode.Identifier("insertSprocMappings", parameters.ScopeVariables, capitalize:=False) + mainBuilder. + AppendLine(). + AppendLine($"Dim {insertSprocMappingsVariable} As New List(Of StoredProcedureMapping)()"). + Append($"{typeBaseVariable}.SetRuntimeAnnotation("). + AppendLine($"{VBCode.Literal(RelationalAnnotationNames.InsertStoredProcedureMappings)}, {insertSprocMappingsVariable})") + For Each mapping In typeBase.GetInsertStoredProcedureMappings() + Create( + mapping, + insertSprocMappingsVariable, + StoreObjectType.InsertStoredProcedure, + metadataVariables, + parameters) + Next + End If - mainBuilder.AppendLine($"Return {relationalModelVariable}.MakeReadOnly()") - End Using + If typeBase.GetUpdateStoredProcedureMappings().Any() Then + Dim updateSprocMappingsVariable = VBCode.Identifier("updateSprocMappings", parameters.ScopeVariables, capitalize:=False) + mainBuilder. + AppendLine(). + AppendLine($"Dim {updateSprocMappingsVariable} As New List(Of StoredProcedureMapping)()"). + Append($"{typeBaseVariable}.SetRuntimeAnnotation("). + AppendLine($"{VBCode.Literal(RelationalAnnotationNames.UpdateStoredProcedureMappings)}, {updateSprocMappingsVariable})") + For Each mapping In typeBase.GetUpdateStoredProcedureMappings() + Create( + mapping, + updateSprocMappingsVariable, + StoreObjectType.UpdateStoredProcedure, + metadataVariables, + parameters) + Next + End If - mainBuilder.AppendLine("End Function") + For Each complexProperty In typeBase.GetDeclaredComplexProperties() + CreateMappings(complexProperty.ComplexType, typeBaseVariable, metadataVariables, parameters) + Next End Sub ''' @@ -450,15 +457,13 @@ Namespace Design.AnnotationCodeGeneratorProvider Return sqlQueryVariable End If - Dim code = VBCode - - sqlQueryVariable = code.Identifier(SqlQuery.Name & "SqlQuery", parameters.ScopeVariables, capitalize:=False) + sqlQueryVariable = VBCode.Identifier(SqlQuery.Name & "SqlQuery", parameters.ScopeVariables, capitalize:=False) metadataVariables.Add(SqlQuery, sqlQueryVariable) Dim mainBuilder = parameters.MainBuilder mainBuilder. - Append($"Dim {sqlQueryVariable} As New SqlQuery({code.Literal(SqlQuery.Name)}, {parameters.TargetName}, "). - AppendLine($"{code.Literal(SqlQuery.Sql)})") + Append($"Dim {sqlQueryVariable} As New SqlQuery({VBCode.Literal(SqlQuery.Name)}, {parameters.TargetName}, "). + AppendLine($"{VBCode.Literal(SqlQuery.Sql)})") Dim sqlQueryParameters = parameters.Cloner. WithTargetName(sqlQueryVariable). @@ -473,8 +478,8 @@ Namespace Design.AnnotationCodeGeneratorProvider sqlQueryParameters) mainBuilder. - Append($"{parameters.TargetName}.Views.Add(("). - AppendLine($"{code.Literal(SqlQuery.Name)}, {code.Literal(SqlQuery.Schema)}), {sqlQueryVariable})") + Append($"{parameters.TargetName}.Queries.Add("). + AppendLine($"{VBCode.Literal(SqlQuery.Name)}, {sqlQueryVariable})") Return sqlQueryVariable End Function @@ -497,10 +502,8 @@ Namespace Design.AnnotationCodeGeneratorProvider Return functionVariable End If - Dim code = VBCode - Dim mainDbFunctionVariable = GetOrCreate([function].DbFunctions.First(), metadataVariables, parameters) - functionVariable = code.Identifier([function].Name & "Function", parameters.ScopeVariables, capitalize:=False) + functionVariable = VBCode.Identifier([function].Name & "Function", parameters.ScopeVariables, capitalize:=False) metadataVariables.Add([function], functionVariable) Dim mainBuilder = parameters.MainBuilder @@ -518,14 +521,14 @@ Namespace Design.AnnotationCodeGeneratorProvider mainBuilder. AppendLine($"{dbFunctionVariable}.StoreFunction = {functionVariable}"). - AppendLine($"{functionVariable}.DbFunctions.Add({code.Literal(dbFunction.ModelName)}, {dbFunctionVariable})") + AppendLine($"{functionVariable}.DbFunctions.Add({VBCode.Literal(dbFunction.ModelName)}, {dbFunctionVariable})") Next For Each parameter In [function].Parameters - Dim parameterVariable = code.Identifier(parameter.Name & "FunctionParameter", parameters.ScopeVariables, capitalize:=False) + Dim parameterVariable = VBCode.Identifier(parameter.Name & "FunctionParameter", parameters.ScopeVariables, capitalize:=False) metadataVariables.Add(parameter, parameterVariable) - mainBuilder.AppendLine($"Dim {parameterVariable} = {functionVariable}.FindParameter({code.Literal(parameter.Name)})") + mainBuilder.AppendLine($"Dim {parameterVariable} = {functionVariable}.FindParameter({VBCode.Literal(parameter.Name)})") CreateAnnotations(parameter, AddressOf Generate, @@ -545,8 +548,8 @@ Namespace Design.AnnotationCodeGeneratorProvider mainBuilder. AppendLine($"{parameters.TargetName}.Functions.Add("). IncrementIndent(). - Append($"({code.Literal([function].Name)}, {code.Literal([function].Schema)}, "). - AppendLine($"{code.Literal([function].DbFunctions.First().Parameters.Select(Function(p) p.StoreType).ToArray())}),"). + Append($"({VBCode.Literal([function].Name)}, {VBCode.Literal([function].Schema)}, "). + AppendLine($"{VBCode.Literal([function].DbFunctions.First().Parameters.Select(Function(p) p.StoreType).ToArray())}),"). AppendLine($"{functionVariable})"). DecrementIndent() @@ -1123,8 +1126,8 @@ Namespace Design.AnnotationCodeGeneratorProvider Dim code = VBCode Dim mainBuilder = parameters.MainBuilder - Dim entityType = tableMapping.EntityType - Dim entityTypeVariable = metadataVariables(entityType) + Dim typeBase = tableMapping.TypeBase + Dim typeBaseVariable = metadataVariables(TypeBase) Dim table = tableMapping.Table Dim tableVariable = GetOrCreate(table, metadataVariables, parameters) @@ -1133,7 +1136,7 @@ Namespace Design.AnnotationCodeGeneratorProvider GenerateAddMapping( tableMapping, tableVariable, - entityTypeVariable, + typeBaseVariable, tableMappingsVariable, tableMappingVariable, "TableMappingBase(Of ColumnMappingBase)", @@ -1150,7 +1153,7 @@ Namespace Design.AnnotationCodeGeneratorProvider mainBuilder. Append($"RelationalModel.CreateColumnMapping("). Append($"DirectCast({tableVariable}.FindColumn({code.Literal(columnMapping.Column.Name)}), ColumnBase(Of ColumnMappingBase)), "). - Append($"{entityTypeVariable}.FindProperty({code.Literal(columnMapping.Property.Name)}), "). + Append($"{typeBaseVariable}.FindProperty({code.Literal(columnMapping.Property.Name)}), "). Append(tableMappingVariable).AppendLine(")") Next End Sub @@ -1164,15 +1167,15 @@ Namespace Design.AnnotationCodeGeneratorProvider GenerateSimpleAnnotations(parameters) End Sub - Private Sub Create(tableMapping As Microsoft.EntityFrameworkCore.Metadata.ITableMapping, + Private Sub Create(tableMapping As ITableMapping, tableMappingsVariable As String, metadataVariables As Dictionary(Of IAnnotatable, String), parameters As VisualBasicRuntimeAnnotationCodeGeneratorParameters) Dim code = VBCode Dim mainBuilder = parameters.MainBuilder - Dim entityType = tableMapping.EntityType - Dim entityTypeVariable = metadataVariables(entityType) + Dim typeBase = tableMapping.TypeBase + Dim typeBaseVariable = metadataVariables(TypeBase) Dim table = tableMapping.Table Dim tableVariable = GetOrCreate(table, metadataVariables, parameters) @@ -1182,7 +1185,7 @@ Namespace Design.AnnotationCodeGeneratorProvider GenerateAddMapping( tableMapping, tableVariable, - entityTypeVariable, + typeBaseVariable, tableMappingsVariable, tableMappingVariable, "TableMapping", @@ -1198,7 +1201,7 @@ Namespace Design.AnnotationCodeGeneratorProvider For Each columnMapping In tableMapping.ColumnMappings mainBuilder. Append($"RelationalModel.CreateColumnMapping({tableVariable}.FindColumn({code.Literal(columnMapping.Column.Name)}), "). - Append($"{entityTypeVariable}.FindProperty({code.Literal(columnMapping.Property.Name)}), "). + Append($"{typeBaseVariable}.FindProperty({code.Literal(columnMapping.Property.Name)}), "). Append(tableMappingVariable).AppendLine(")") Next End Sub @@ -1219,8 +1222,8 @@ Namespace Design.AnnotationCodeGeneratorProvider Dim code = VBCode Dim mainBuilder = parameters.MainBuilder - Dim entityType = viewMapping.EntityType - Dim entityTypeVariable = metadataVariables(entityType) + Dim typeBase = viewMapping.TypeBase + Dim typeBaseVariable = metadataVariables(TypeBase) Dim view = viewMapping.View Dim viewVariable = GetOrCreate(view, metadataVariables, parameters) @@ -1229,7 +1232,7 @@ Namespace Design.AnnotationCodeGeneratorProvider GenerateAddMapping( viewMapping, viewVariable, - entityTypeVariable, + typeBaseVariable, viewMappingsVariable, viewMappingVariable, "ViewMapping", @@ -1246,7 +1249,7 @@ Namespace Design.AnnotationCodeGeneratorProvider mainBuilder. Append($"RelationalModel.CreateViewColumnMapping({viewVariable}.FindColumn({code.Literal(columnMapping.Column.Name)}), "). - Append($"{entityTypeVariable}.FindProperty({code.Literal(columnMapping.Property.Name)}), "). + Append($"{typeBaseVariable}.FindProperty({code.Literal(columnMapping.Property.Name)}), "). Append(viewMappingVariable).AppendLine(")") Next End Sub @@ -1267,8 +1270,8 @@ Namespace Design.AnnotationCodeGeneratorProvider Dim code = VBCode Dim mainBuilder = parameters.MainBuilder - Dim entityType = sqlQueryMapping.EntityType - Dim entityTypeVariable = metadataVariables(entityType) + Dim typeBase = sqlQueryMapping.TypeBase + Dim typeBaseVariable = metadataVariables(TypeBase) Dim sqlQuery = sqlQueryMapping.SqlQuery Dim sqlQueryVariable = GetOrCreate(sqlQuery, metadataVariables, parameters) @@ -1277,7 +1280,7 @@ Namespace Design.AnnotationCodeGeneratorProvider GenerateAddMapping( sqlQueryMapping, sqlQueryVariable, - entityTypeVariable, + typeBaseVariable, sqlQueryMappingsVariable, sqlQueryMappingVariable, "SqlQueryMapping", @@ -1299,7 +1302,7 @@ Namespace Design.AnnotationCodeGeneratorProvider mainBuilder. Append($"RelationalModel.CreateSqlQueryColumnMapping({sqlQueryVariable}.FindColumn({code.Literal(columnMapping.Column.Name)}), "). - Append($"{entityTypeVariable}.FindProperty({code.Literal(columnMapping.Property.Name)}), "). + Append($"{typeBaseVariable}.FindProperty({code.Literal(columnMapping.Property.Name)}), "). Append(sqlQueryMappingVariable). AppendLine(")") Next @@ -1321,8 +1324,8 @@ Namespace Design.AnnotationCodeGeneratorProvider Dim code = VBCode Dim mainBuilder = parameters.MainBuilder - Dim entityType = functionMapping.EntityType - Dim entityTypeVariable = metadataVariables(entityType) + Dim typeBase = functionMapping.TypeBase + Dim typeBaseVariable = metadataVariables(TypeBase) Dim storeFunction = functionMapping.StoreFunction Dim functionVariable = GetOrCreate(storeFunction, metadataVariables, parameters) @@ -1332,7 +1335,7 @@ Namespace Design.AnnotationCodeGeneratorProvider GenerateAddMapping( functionMapping, functionVariable, - entityTypeVariable, + typeBaseVariable, functionMappingsVariable, functionMappingVariable, "FunctionMapping", @@ -1354,7 +1357,7 @@ Namespace Design.AnnotationCodeGeneratorProvider For Each columnMapping In functionMapping.ColumnMappings mainBuilder. Append($"RelationalModel.CreateFunctionColumnMapping({functionVariable}.FindColumn({code.Literal(columnMapping.Column.Name)}), "). - Append($"{entityTypeVariable}.FindProperty({code.Literal(columnMapping.Property.Name)}), "). + Append($"{typeBaseVariable}.FindProperty({code.Literal(columnMapping.Property.Name)}), "). Append(functionMappingVariable).AppendLine(")") Next End Sub @@ -1376,8 +1379,8 @@ Namespace Design.AnnotationCodeGeneratorProvider Dim code = VBCode Dim mainBuilder = parameters.MainBuilder - Dim entityType = sprocMapping.EntityType - Dim entityTypeVariable = metadataVariables(entityType) + Dim typeBase = sprocMapping.TypeBase + Dim typeBaseVariable = metadataVariables(typeBase) Dim storeSproc = sprocMapping.StoreStoredProcedure Dim storeSprocVariable = GetOrCreate(storeSproc, metadataVariables, parameters) @@ -1401,12 +1404,12 @@ Namespace Design.AnnotationCodeGeneratorProvider GenerateAddMapping( sprocMapping, storeSprocVariable, - entityTypeVariable, + typeBaseVariable, sprocMappingsVariable, sprocMappingVariable, "StoredProcedureMapping", parameters, - $"{sprocSnippet}, {If(tableMappingVariable, "null")}, ") + $"{sprocSnippet}, {If(tableMappingVariable, "Nothing")}, ") If tableMappingVariable IsNot Nothing Then mainBuilder. @@ -1424,7 +1427,7 @@ Namespace Design.AnnotationCodeGeneratorProvider mainBuilder. Append($"RelationalModel.CreateStoredProcedureParameterMapping({metadataVariables(parameterMapping.StoreParameter)}, "). Append($"{sprocVariable}.FindParameter({code.Literal(parameterMapping.Parameter.Name)}), "). - Append($"{entityTypeVariable}.FindProperty({code.Literal(parameterMapping.Property.Name)}), "). + Append($"{typeBaseVariable}.FindProperty({code.Literal(parameterMapping.Property.Name)}), "). Append(sprocMappingVariable).AppendLine(")") Next @@ -1432,7 +1435,7 @@ Namespace Design.AnnotationCodeGeneratorProvider mainBuilder. Append($"RelationalModel.CreateStoredProcedureResultColumnMapping({metadataVariables(columnMapping.StoreResultColumn)}, "). Append($"{sprocVariable}.FindResultColumn({code.Literal(columnMapping.ResultColumn.Name)}), "). - Append($"{entityTypeVariable}.FindProperty({code.Literal(columnMapping.Property.Name)}), "). + Append($"{typeBaseVariable}.FindProperty({code.Literal(columnMapping.Property.Name)}), "). Append(sprocMappingVariable).AppendLine(")") Next End Sub @@ -1457,7 +1460,7 @@ Namespace Design.AnnotationCodeGeneratorProvider Dim code = VBCode Dim mainBuilder = parameters.MainBuilder - Dim entityType = tableMapping.EntityType + Dim typeBase = tableMapping.TypeBase mainBuilder. Append($"Dim {tableMappingVariable} As New {mappingType}({entityTypeVariable}, "). @@ -1497,23 +1500,26 @@ Namespace Design.AnnotationCodeGeneratorProvider End If Dim table = tableMapping.Table - Dim isOptional = table.IsOptional(entityType) + Dim isOptional = table.IsOptional(TypeBase) mainBuilder. - AppendLine($"{tableVariable}.AddEntityTypeMapping({tableMappingVariable}, {code.Literal(isOptional)})"). + AppendLine($"{tableVariable}.AddTypeMapping({tableMappingVariable}, {code.Literal(isOptional)})"). AppendLine($"{tableMappingsVariable}.Add({tableMappingVariable})") - For Each internalForeignKey In table.GetRowInternalForeignKeys(entityType) - mainBuilder. - Append(tableVariable).Append($".AddRowInternalForeignKey({entityTypeVariable}, "). - AppendLine($"RelationalModel.GetForeignKey(Me,"). - IncrementIndent(). - AppendLine($"{code.Literal(internalForeignKey.DeclaringEntityType.Name)},"). - AppendLine($"{code.Literal(internalForeignKey.Properties.Select(Function(p) p.Name).ToArray())},"). - AppendLine($"{code.Literal(internalForeignKey.PrincipalEntityType.Name)},"). - AppendLine($"{code.Literal(internalForeignKey.PrincipalKey.Properties.Select(Function(p) p.Name).ToArray())}))"). - DecrementIndent() - Next + If TypeOf TypeBase Is IEntityType Then + Dim entityType = DirectCast(TypeBase, IEntityType) + For Each internalForeignKey In table.GetRowInternalForeignKeys(EntityType) + mainBuilder. + Append(tableVariable).Append($".AddRowInternalForeignKey({entityTypeVariable}, "). + AppendLine($"RelationalModel.GetForeignKey(Me,"). + IncrementIndent(). + AppendLine($"{code.Literal(internalForeignKey.DeclaringEntityType.Name)},"). + AppendLine($"{code.Literal(internalForeignKey.Properties.Select(Function(p) p.Name).ToArray())},"). + AppendLine($"{code.Literal(internalForeignKey.PrincipalEntityType.Name)},"). + AppendLine($"{code.Literal(internalForeignKey.PrincipalKey.Properties.Select(Function(p) p.Name).ToArray())}))"). + DecrementIndent() + Next + End If End Sub Private Sub Create([function] As IDbFunction, @@ -1868,6 +1874,31 @@ Namespace Design.AnnotationCodeGeneratorProvider MyBase.Generate(entityType, parameters) End Sub + ''' + Public Overrides Sub Generate(complexType As IComplexType, parameters As VisualBasicRuntimeAnnotationCodeGeneratorParameters) + Dim annotations = parameters.Annotations + If parameters.IsRuntime Then + annotations.Remove(RelationalAnnotationNames.TableMappings) + annotations.Remove(RelationalAnnotationNames.ViewMappings) + annotations.Remove(RelationalAnnotationNames.SqlQueryMappings) + annotations.Remove(RelationalAnnotationNames.FunctionMappings) + annotations.Remove(RelationalAnnotationNames.InsertStoredProcedureMappings) + annotations.Remove(RelationalAnnotationNames.DeleteStoredProcedureMappings) + annotations.Remove(RelationalAnnotationNames.UpdateStoredProcedureMappings) + annotations.Remove(RelationalAnnotationNames.DefaultMappings) + Else + ' These need to be set explicitly to prevent default values from being generated + annotations(RelationalAnnotationNames.TableName) = complexType.GetTableName() + annotations(RelationalAnnotationNames.Schema) = complexType.GetSchema() + annotations(RelationalAnnotationNames.ViewName) = complexType.GetViewName() + annotations(RelationalAnnotationNames.ViewSchema) = complexType.GetViewSchema() + annotations(RelationalAnnotationNames.SqlQuery) = complexType.GetSqlQuery() + annotations(RelationalAnnotationNames.FunctionName) = complexType.GetFunctionName() + End If + + MyBase.Generate(complexType, parameters) + End Sub + Private Sub Create(fragment As IEntityTypeMappingFragment, fragmentsVariable As String, parameters As VisualBasicRuntimeAnnotationCodeGeneratorParameters) diff --git a/EFCore.VisualBasic/Design/VisualBasicRuntimeAnnotationCodeGenerator.vb b/EFCore.VisualBasic/Design/VisualBasicRuntimeAnnotationCodeGenerator.vb index 6ae584d..8cb7d2f 100644 --- a/EFCore.VisualBasic/Design/VisualBasicRuntimeAnnotationCodeGenerator.vb +++ b/EFCore.VisualBasic/Design/VisualBasicRuntimeAnnotationCodeGenerator.vb @@ -63,6 +63,43 @@ Namespace Design GenerateSimpleAnnotations(parameters) End Sub + ''' + Public Overridable Sub Generate(complexProperty As IComplexProperty, parameters As VisualBasicRuntimeAnnotationCodeGeneratorParameters) _ + Implements IVisualBasicRuntimeAnnotationCodeGenerator.Generate + + Dim annotations = parameters.Annotations + + If Not parameters.IsRuntime Then + For Each annotation In annotations + If CoreAnnotationNames.AllNames.Contains(annotation.Key) AndAlso + annotation.Key <> CoreAnnotationNames.DiscriminatorMappingComplete Then + + annotations.Remove(annotation.Key) + End If + Next + End If + + GenerateSimpleAnnotations(parameters) + End Sub + + ''' + Public Overridable Sub Generate(complexType As IComplexType, parameters As VisualBasicRuntimeAnnotationCodeGeneratorParameters) _ + Implements IVisualBasicRuntimeAnnotationCodeGenerator.Generate + + Dim annotations = parameters.Annotations + If Not parameters.IsRuntime Then + For Each annotation In annotations + If CoreAnnotationNames.AllNames.Contains(annotation.Key) AndAlso + annotation.Key <> CoreAnnotationNames.DiscriminatorMappingComplete Then + + annotations.Remove(annotation.Key) + End If + Next + End If + + GenerateSimpleAnnotations(parameters) + End Sub + ''' Public Overridable Sub Generate(prop As IProperty, parameters As VisualBasicRuntimeAnnotationCodeGeneratorParameters) _ Implements IVisualBasicRuntimeAnnotationCodeGenerator.Generate diff --git a/EFCore.VisualBasic/EFCore.VisualBasic.vbproj b/EFCore.VisualBasic/EFCore.VisualBasic.vbproj index 944857c..4cb16a3 100644 --- a/EFCore.VisualBasic/EFCore.VisualBasic.vbproj +++ b/EFCore.VisualBasic/EFCore.VisualBasic.vbproj @@ -1,7 +1,7 @@ - net6.0 + net8.0 EntityFrameworkCore.VisualBasic EntityFrameworkCore.VisualBasic Brice Lambson, et al. @@ -47,16 +47,16 @@ - + all - + all - + all - + all diff --git a/EFCore.VisualBasic/Migrations/Design/VisualBasicSnapshotGenerator.vb b/EFCore.VisualBasic/Migrations/Design/VisualBasicSnapshotGenerator.vb index 5de3cbe..07647ff 100644 --- a/EFCore.VisualBasic/Migrations/Design/VisualBasicSnapshotGenerator.vb +++ b/EFCore.VisualBasic/Migrations/Design/VisualBasicSnapshotGenerator.vb @@ -24,7 +24,16 @@ Namespace Migrations.Design Public Class VisualBasicSnapshotGenerator Private Shared ReadOnly HasAnnotationMethodInfo As MethodInfo = - GetType(ModelBuilder).GetRuntimeMethod(NameOf(ModelBuilder.HasAnnotation), {GetType(String), GetType(String)}) + GetType(ModelBuilder).GetRuntimeMethod(NameOf(ModelBuilder.HasAnnotation), + {GetType(String), GetType(String)}) + + Private Shared ReadOnly HasPropertyAnnotationMethodInfo As MethodInfo = + GetType(ComplexPropertyBuilder).GetRuntimeMethod(NameOf(ComplexPropertyBuilder.HasPropertyAnnotation), + {GetType(String), GetType(String)}) + + Private Shared ReadOnly HasTypeAnnotationMethodInfo As MethodInfo = + GetType(ComplexPropertyBuilder).GetRuntimeMethod(NameOf(ComplexPropertyBuilder.HasTypeAnnotation), + {GetType(String), GetType(String)}) ''' ''' Initializes a New instance of the class. @@ -101,7 +110,6 @@ Namespace Migrations.Design NotNull(entityTypes, NameOf(entityTypes)) NotNull(stringBuilder, NameOf(stringBuilder)) - Dim nonOwnedTypes = entityTypes.Where(Function(e) e.FindOwnership() Is Nothing).ToList() For Each entityType In nonOwnedTypes stringBuilder.AppendLine() @@ -128,14 +136,14 @@ Namespace Migrations.Design ''' ''' Generates code for an . ''' - ''' The name of the builder variable. + ''' The name of the builder variable. ''' The entity type. ''' The builder code Is added to. - Protected Overridable Sub GenerateEntityType(modelBuilderName As String, + Protected Overridable Sub GenerateEntityType(builderName As String, entityType As IEntityType, stringBuilder As IndentedStringBuilder) - NotEmpty(modelBuilderName, NameOf(modelBuilderName)) + NotEmpty(builderName, NameOf(builderName)) NotNull(entityType, NameOf(entityType)) NotNull(stringBuilder, NameOf(stringBuilder)) @@ -154,10 +162,10 @@ Namespace Migrations.Design entityTypeName = entityType.ClrType.DisplayName() End If - Dim entityTypeBuilderName = GenerateEntityTypeBuilderName(modelBuilderName) + Dim entityTypeBuilderName = GenerateNestedBuilderName(builderName) stringBuilder. - Append(modelBuilderName). + Append(builderName). Append(If(ownerNavigation IsNot Nothing, If(ownership.IsUnique, ".OwnsOne(", ".OwnsMany("), ".Entity(")). Append(VBCode.Literal(entityTypeName)) @@ -181,6 +189,8 @@ Namespace Migrations.Design GenerateProperties(entityTypeBuilderName, entityType.GetDeclaredProperties(), stringBuilder) + GenerateComplexProperties(entityTypeBuilderName, entityType.GetDeclaredComplexProperties(), stringBuilder) + GenerateKeys( entityTypeBuilderName, entityType.GetDeclaredKeys(), @@ -206,20 +216,6 @@ Namespace Migrations.Design End Using End Sub - Private Function GenerateEntityTypeBuilderName(modelBuilderName As String) As String - If modelBuilderName.StartsWith("b", StringComparison.Ordinal) Then - Dim counter = 1 - If modelBuilderName.Length > 1 AndAlso - Integer.TryParse(modelBuilderName.AsSpan(1, modelBuilderName.Length - 1), counter) Then - counter += 1 - End If - - Return "b" & If(counter = 0, "", counter.ToString()) - End If - - Return "b" - End Function - ''' ''' Generates code for owned entity types. ''' @@ -583,7 +579,7 @@ Namespace Migrations.Design annotations(RelationalAnnotationNames.DefaultValue) = New Annotation( RelationalAnnotationNames.DefaultValue, - ValueConverter.ConvertToProvider(defaultValue)) + valueConverter.ConvertToProvider(defaultValue)) End If GenerateAnnotations(propertyBuilderName, [property], stringBuilder, annotations, inChainedCall:=True) @@ -594,6 +590,100 @@ Namespace Migrations.Design Return If([property].GetValueConverter(), t?.Converter) End Function + ''' + ''' Generates code for objects. + ''' + ''' The name of the builder variable. + ''' The properties. + ''' The builder code Is added to. + Protected Overridable Sub GenerateComplexProperties(typeBuilderName As String, + properties As IEnumerable(Of IComplexProperty), + stringBuilder As IndentedStringBuilder) + For Each [property] In properties + GenerateComplexProperty(typeBuilderName, [property], stringBuilder) + Next + End Sub + + ''' + ''' Generates code for an . + ''' + ''' The name of the builder variable. + ''' The entity type. + ''' The builder code Is added to. + Protected Overridable Sub GenerateComplexProperty(builderName As String, + complexProperty As IComplexProperty, + stringBuilder As IndentedStringBuilder) + + Dim ComplexType = complexProperty.ComplexType + Dim complexTypeBuilderName = GenerateNestedBuilderName(builderName) + + stringBuilder. + AppendLine(). + Append(builderName). + Append($".ComplexProperty(Of {VBCode.Reference(Model.DefaultPropertyBagType)})("). + AppendLine($"{VBCode.Literal(complexProperty.Name)}, {VBCode.Literal(ComplexType.Name)},") + + Using stringBuilder.Indent() + stringBuilder. + AppendLine($"Sub({complexTypeBuilderName})") + + Using stringBuilder.Indent() + If complexProperty.IsNullable <> complexProperty.ClrType.IsNullableType() Then + stringBuilder. + Append(complexTypeBuilderName). + AppendLine(".IsRequired()"). + AppendLine() + End If + + GenerateProperties(complexTypeBuilderName, ComplexType.GetDeclaredProperties(), stringBuilder) + + GenerateComplexProperties(complexTypeBuilderName, ComplexType.GetDeclaredComplexProperties(), stringBuilder) + + GenerateComplexPropertyAnnotations(complexTypeBuilderName, complexProperty, stringBuilder) + End Using + + stringBuilder. + AppendLine("End Sub)") + End Using + End Sub + + Private Shared Function GenerateNestedBuilderName(builderName As String) As String + If builderName.StartsWith("b", StringComparison.Ordinal) Then + Dim counter = 1 + If builderName.Length > 1 AndAlso Integer.TryParse(builderName.AsSpan(1), counter) Then + counter += 1 + End If + + Return "b" & If(counter = 0, "", counter.ToString()) + End If + + Return "b" + End Function + + ''' + ''' Generates code for the annotations on an . + ''' + ''' The name of the builder variable. + ''' The property. + ''' The builder code Is added to. + Protected Overridable Sub GenerateComplexPropertyAnnotations(propertyBuilderName As String, + [property] As IComplexProperty, + stringBuilder As IndentedStringBuilder) + + Dim propertyAnnotations = AnnotationCodeGenerator. + FilterIgnoredAnnotations([property].GetAnnotations()). + ToDictionary(Function(a) a.Name, Function(a) a) + + Dim typeAnnotations = AnnotationCodeGenerator. + FilterIgnoredAnnotations([property].ComplexType.GetAnnotations()). + ToDictionary(Function(a) a.Name, Function(a) a) + + GenerateAnnotations(propertyBuilderName, [property], stringBuilder, propertyAnnotations, + inChainedCall:=False, hasAnnotationMethodInfo:=HasPropertyAnnotationMethodInfo) + + GenerateAnnotations(propertyBuilderName, [property], stringBuilder, typeAnnotations, + inChainedCall:=False, hasAnnotationMethodInfo:=HasTypeAnnotationMethodInfo) + End Sub ''' ''' Generates code for objects. @@ -1035,7 +1125,7 @@ Namespace Migrations.Design End Using End If - stringBuilder.AppendLine(")"c) + stringBuilder.AppendLine(")"c) End Sub Private Sub GenerateSplitTableMapping(entityTypeBuilderName As String, @@ -1828,7 +1918,8 @@ Namespace Migrations.Design stringBuilder As IndentedStringBuilder, annotations As Dictionary(Of String, IAnnotation), inChainedCall As Boolean, - Optional leadingNewline As Boolean = True) + Optional leadingNewline As Boolean = True, + Optional hasAnnotationMethodInfo As MethodInfo = Nothing) Dim fluentApiCalls = AnnotationCodeGenerator.GenerateFluentApiCalls(annotatable, annotations) @@ -1849,7 +1940,10 @@ Namespace Migrations.Design ' Append remaining raw annotations which did Not get generated as Fluent API calls For Each annotation In annotations.Values.OrderBy(Function(a) a.Name) - Dim c = New MethodCallCodeFragment(HasAnnotationMethodInfo, annotation.Name, annotation.Value) + Dim c As New MethodCallCodeFragment(If(hasAnnotationMethodInfo, VisualBasicSnapshotGenerator.HasAnnotationMethodInfo), + annotation.Name, + annotation.Value) + chainedCall = If(chainedCall Is Nothing, c, chainedCall.Chain(c)) Next diff --git a/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicDbContextGenerator.tt b/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicDbContextGenerator.tt index 994ca39..c63582b 100644 --- a/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicDbContextGenerator.tt +++ b/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicDbContextGenerator.tt @@ -72,7 +72,7 @@ Namespace <#= FileNamespaceIdentifier #> <# If Not Options.SuppressConnectionStringWarning Then #> - 'TODO /!\ To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263. + 'TODO /!\ To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see https://go.microsoft.com/fwlink/?LinkId=723263. <# End If #> diff --git a/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicDbContextGenerator.vb b/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicDbContextGenerator.vb index 6bc282a..93fc187 100644 --- a/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicDbContextGenerator.vb +++ b/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicDbContextGenerator.vb @@ -93,7 +93,7 @@ Namespace Scaffolding.Internal "tion string, you should move it out of source code. You can avoid scaffolding th"& _ "e connection string by using the Name= syntax to read it from configuration - se"& _ "e https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing "& _ - "connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263."&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)) + "connection strings, see https://go.microsoft.com/fwlink/?LinkId=723263."&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)) End If @@ -560,7 +560,7 @@ End Sub ''' '''The string builder that generation-time code is using to assemble generated output ''' - Protected Property GenerationEnvironment() As System.Text.StringBuilder + Public Property GenerationEnvironment() As System.Text.StringBuilder Get If (Me.generationEnvironmentField Is Nothing) Then Me.generationEnvironmentField = New Global.System.Text.StringBuilder() diff --git a/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicEntityTypeGenerator.vb b/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicEntityTypeGenerator.vb index 4807a85..404b446 100644 --- a/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicEntityTypeGenerator.vb +++ b/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicEntityTypeGenerator.vb @@ -357,7 +357,7 @@ End Sub ''' '''The string builder that generation-time code is using to assemble generated output ''' - Protected Property GenerationEnvironment() As System.Text.StringBuilder + Public Property GenerationEnvironment() As System.Text.StringBuilder Get If (Me.generationEnvironmentField Is Nothing) Then Me.generationEnvironmentField = New Global.System.Text.StringBuilder() diff --git a/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicRuntimeModelCodeGenerator.vb b/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicRuntimeModelCodeGenerator.vb index 7eaf926..eea89fe 100644 --- a/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicRuntimeModelCodeGenerator.vb +++ b/EFCore.VisualBasic/Scaffolding/Internal/VisualBasicRuntimeModelCodeGenerator.vb @@ -488,6 +488,10 @@ $" Dim model As New {className}() Using mainBuilder.Indent() CreateEntityType(entityType, mainBuilder, methodBuilder, namespaces, className) + For Each complexProperty In entityType.GetDeclaredComplexProperties() + CreateComplexProperty(complexProperty, mainBuilder, methodBuilder, namespaces, className) + Next + Dim foreignKeyNumber = 1 For Each foreignKey As IForeignKey In entityType.GetDeclaredForeignKeys() CreateForeignKey(foreignKey, foreignKeyNumber, mainBuilder, methodBuilder, namespaces, className) @@ -556,6 +560,16 @@ $" Dim model As New {className}() Create(prop, parameters) Next + For Each complexProperty In entityType.GetDeclaredComplexProperties() + mainBuilder. + Append(_code.Identifier(complexProperty.Name, capitalize:=True)). + Append("ComplexProperty"). + Append(".Create"). + Append("("). + Append(entityTypeVariable). + AppendLine(")") + Next + For Each aKey In entityType.GetDeclaredKeys() Create(aKey, propertyVariables, parameters) Next @@ -678,61 +692,77 @@ $" Dim model As New {className}() DecrementIndent() End Sub - Private Sub Create(prop As IProperty, + Private Sub Create([property] As IProperty, propertyVariables As Dictionary(Of IProperty, String), parameters As VisualBasicRuntimeAnnotationCodeGeneratorParameters) - Dim valueGeneratorFactoryType = TryCast(prop(CoreAnnotationNames.ValueGeneratorFactoryType), Type) + Dim variableName = _code.Identifier([property].Name, parameters.ScopeVariables, capitalize:=False) + propertyVariables([property]) = variableName + + Create([property], variableName, propertyVariables, parameters) + + CreateAnnotations([property], + AddressOf _annotationCodeGenerator.Generate, + parameters.Cloner. + WithTargetName(variableName). + Clone) + + parameters.MainBuilder.AppendLine() + End Sub + + Private Sub Create([property] As IProperty, + variableName As String, + propertyVariables As Dictionary(Of IProperty, String), + parameters As VisualBasicRuntimeAnnotationCodeGeneratorParameters) + + Dim valueGeneratorFactoryType = TryCast([property](CoreAnnotationNames.ValueGeneratorFactoryType), Type) If valueGeneratorFactoryType Is Nothing AndAlso - prop.GetValueGeneratorFactory() IsNot Nothing Then + [property].GetValueGeneratorFactory() IsNot Nothing Then Throw New InvalidOperationException( DesignStrings.CompiledModelValueGenerator( - prop.DeclaringEntityType.ShortName(), prop.Name, NameOf(PropertyBuilder.HasValueGeneratorFactory))) + [property].DeclaringType.ShortName(), [property].Name, NameOf(PropertyBuilder.HasValueGeneratorFactory))) End If - Dim valueComparerType = TryCast(prop(CoreAnnotationNames.ValueComparerType), Type) + Dim valueComparerType = TryCast([property](CoreAnnotationNames.ValueComparerType), Type) If valueComparerType Is Nothing AndAlso - prop(CoreAnnotationNames.ValueComparer) IsNot Nothing Then + [property](CoreAnnotationNames.ValueComparer) IsNot Nothing Then Throw New InvalidOperationException( DesignStrings.CompiledModelValueComparer( - prop.DeclaringEntityType.ShortName(), prop.Name, NameOf(PropertyBuilder.HasConversion))) + [property].DeclaringType.ShortName(), [property].Name, NameOf(PropertyBuilder.HasConversion))) End If - Dim providerValueComparerType = TryCast(prop(CoreAnnotationNames.ProviderValueComparerType), Type) + Dim providerValueComparerType = TryCast([property](CoreAnnotationNames.ProviderValueComparerType), Type) If providerValueComparerType Is Nothing AndAlso - prop(CoreAnnotationNames.ProviderValueComparer) IsNot Nothing Then + [property](CoreAnnotationNames.ProviderValueComparer) IsNot Nothing Then Throw New InvalidOperationException( DesignStrings.CompiledModelValueComparer( - prop.DeclaringEntityType.ShortName(), prop.Name, NameOf(PropertyBuilder.HasConversion))) + [property].DeclaringType.ShortName(), [property].Name, NameOf(PropertyBuilder.HasConversion))) End If - Dim valueConverterType = GetValueConverterType(prop) + Dim valueConverterType = GetValueConverterType([property]) If valueConverterType Is Nothing AndAlso - prop.GetValueConverter() IsNot Nothing Then + [property].GetValueConverter() IsNot Nothing Then Throw New InvalidOperationException( DesignStrings.CompiledModelValueConverter( - prop.DeclaringEntityType.ShortName(), prop.Name, NameOf(PropertyBuilder.HasConversion))) + [property].DeclaringType.ShortName(), [property].Name, NameOf(PropertyBuilder.HasConversion))) End If - If TypeOf prop Is IConventionProperty Then - Dim conventionProperty = DirectCast(prop, IConventionProperty) + If TypeOf [property] Is IConventionProperty Then + Dim conventionProperty = DirectCast([property], IConventionProperty) If conventionProperty.GetTypeMappingConfigurationSource() IsNot Nothing Then Throw New InvalidOperationException( DesignStrings.CompiledModelTypeMapping( - prop.DeclaringEntityType.ShortName(), prop.Name, "Customize()", parameters.ClassName)) + [property].DeclaringType.ShortName(), [property].Name, "Customize()", parameters.ClassName)) End If End If - Dim variableName = _code.Identifier(prop.Name, parameters.ScopeVariables, capitalize:=False) - propertyVariables(prop) = variableName - Dim mainBuilder = parameters.MainBuilder mainBuilder. @@ -742,74 +772,74 @@ $" Dim model As New {className}() Append(parameters.TargetName). AppendLine(".AddProperty("). IncrementIndent(). - Append(_code.Literal(prop.Name)) + Append(_code.Literal([property].Name)) - PropertyBaseParameters(prop, parameters) + PropertyBaseParameters([property], parameters) - If prop.IsNullable Then + If [property].IsNullable Then mainBuilder. AppendLine(","c). Append("nullable:="). Append(_code.Literal(True)) End If - If prop.IsConcurrencyToken Then + If [property].IsConcurrencyToken Then mainBuilder. AppendLine(","c). Append("concurrencyToken:="). Append(_code.Literal(True)) End If - If prop.ValueGenerated <> ValueGenerated.Never Then + If [property].ValueGenerated <> ValueGenerated.Never Then mainBuilder. AppendLine(","c). Append("valueGenerated:="). - Append(_code.Literal(CType(prop.ValueGenerated, [Enum]))) + Append(_code.Literal(CType([property].ValueGenerated, [Enum]))) End If - If prop.GetBeforeSaveBehavior() <> PropertySaveBehavior.Save Then + If [property].GetBeforeSaveBehavior() <> PropertySaveBehavior.Save Then mainBuilder. AppendLine(","c). Append("beforeSaveBehavior:="). - Append(_code.Literal(CType(prop.GetBeforeSaveBehavior(), [Enum]))) + Append(_code.Literal(CType([property].GetBeforeSaveBehavior(), [Enum]))) End If - If prop.GetAfterSaveBehavior() <> PropertySaveBehavior.Save Then + If [property].GetAfterSaveBehavior() <> PropertySaveBehavior.Save Then mainBuilder. AppendLine(","c). Append("afterSaveBehavior:="). - Append(_code.Literal(CType(prop.GetAfterSaveBehavior(), [Enum]))) + Append(_code.Literal(CType([property].GetAfterSaveBehavior(), [Enum]))) End If - If prop.GetMaxLength().HasValue Then + If [property].GetMaxLength().HasValue Then mainBuilder. AppendLine(","c). Append("maxLength:="). - Append(_code.Literal(prop.GetMaxLength())) + Append(_code.Literal([property].GetMaxLength())) End If - If prop.IsUnicode().HasValue Then + If [property].IsUnicode().HasValue Then mainBuilder. AppendLine(","c). Append("unicode:="). - Append(_code.Literal(prop.IsUnicode())) + Append(_code.Literal([property].IsUnicode())) End If - If prop.GetPrecision().HasValue Then + If [property].GetPrecision().HasValue Then mainBuilder. AppendLine(","c). Append("precision:="). - Append(_code.Literal(prop.GetPrecision())) + Append(_code.Literal([property].GetPrecision())) End If - If prop.GetScale().HasValue Then + If [property].GetScale().HasValue Then mainBuilder. AppendLine(","c). Append("scale:="). - Append(_code.Literal(prop.GetScale())) + Append(_code.Literal([property].GetScale())) End If - Dim providerClrType = prop.GetProviderClrType() + Dim providerClrType = [property].GetProviderClrType() If providerClrType IsNot Nothing Then AddNamespace(providerClrType, parameters.Namespaces) @@ -860,7 +890,7 @@ $" Dim model As New {className}() Append("()") End If - Dim jsonValueReaderWriterType = DirectCast(prop(CoreAnnotationNames.JsonValueReaderWriterType), Type) + Dim jsonValueReaderWriterType = DirectCast([property](CoreAnnotationNames.JsonValueReaderWriterType), Type) If jsonValueReaderWriterType IsNot Nothing Then AddNamespace(jsonValueReaderWriterType, parameters.Namespaces) @@ -884,7 +914,7 @@ $" Dim model As New {className}() End If End If - Dim sentinel = prop.Sentinel + Dim sentinel = [property].Sentinel If sentinel IsNot Nothing Then mainBuilder.AppendLine(","c). Append("sentinel:="). @@ -894,25 +924,16 @@ $" Dim model As New {className}() mainBuilder. AppendLine(")"c). DecrementIndent() - - CreateAnnotations(prop, - AddressOf _annotationCodeGenerator.Generate, - parameters.Cloner. - WithTargetName(variableName). - Clone()) - - mainBuilder. - AppendLine() End Sub - Private Shared Function GetValueConverterType(prop As IProperty) As Type - Dim annotation = prop.FindAnnotation(CoreAnnotationNames.ValueConverterType) + Private Shared Function GetValueConverterType([property] As IProperty) As Type + Dim annotation = [property].FindAnnotation(CoreAnnotationNames.ValueConverterType) If annotation IsNot Nothing Then Return DirectCast(annotation.Value, Type) End If - Dim principalProperty = prop + Dim principalProperty = [property] Dim i = 0 While i < ForeignKey.LongestFkChainAllowedLength @@ -921,7 +942,7 @@ $" Dim model As New {className}() For propertyIndex = 0 To foreignKey.Properties.Count - 1 If principalProperty Is foreignKey.Properties(propertyIndex) Then Dim newPrincipalProperty = foreignKey.PrincipalKey.Properties(propertyIndex) - If newPrincipalProperty Is prop OrElse + If newPrincipalProperty Is [property] OrElse newPrincipalProperty Is principalProperty Then Exit For @@ -948,7 +969,7 @@ $" Dim model As New {className}() If i = ForeignKey.LongestFkChainAllowedLength Then Throw New InvalidOperationException( CoreStrings.RelationshipCycle( - prop.DeclaringEntityType.DisplayName(), prop.Name, "ValueConverterType")) + [property].DeclaringType.DisplayName(), [property].Name, "ValueConverterType")) Else Return Nothing End If @@ -1059,10 +1080,10 @@ $" Dim model As New {className}() mainBuilder.Append("}"c) End Sub - Private Sub Create(prop As IServiceProperty, + Private Sub Create([property] As IServiceProperty, parameters As VisualBasicRuntimeAnnotationCodeGeneratorParameters) - Dim variableName = _code.Identifier(prop.Name, parameters.ScopeVariables, capitalize:=False) + Dim variableName = _code.Identifier([property].Name, parameters.ScopeVariables, capitalize:=False) Dim mainBuilder = parameters.MainBuilder @@ -1073,19 +1094,20 @@ $" Dim model As New {className}() Append(parameters.TargetName). AppendLine(".AddServiceProperty("). IncrementIndent(). - Append(_code.Literal(prop.Name)) + Append(_code.Literal([property].Name)) - PropertyBaseParameters(prop, parameters, skipType:=True) + PropertyBaseParameters([property], parameters, skipType:=True) + AddNamespace([property].ClrType, parameters.Namespaces) mainBuilder. AppendLine(","). - Append("serviceType:=GetType(" & prop.ClrType.DisplayName(fullName:=True, compilable:=True) & ")") + Append("serviceType:=GetType(" & _code.Reference([property].ClrType) & ")") mainBuilder. AppendLine(")"c). DecrementIndent() - CreateAnnotations(prop, + CreateAnnotations([property], AddressOf _annotationCodeGenerator.Generate, parameters.Cloner. WithTargetName(variableName). @@ -1179,6 +1201,157 @@ $" Dim model As New {className}() AppendLine() End Sub + Private Sub CreateComplexProperty(complexProperty As IComplexProperty, + mainBuilder As IndentedStringBuilder, + methodBuilder As IndentedStringBuilder, + namespaces As SortedSet(Of String), + topClassName As String) + + mainBuilder. + AppendLine(). + Append("Private Class "). + Append(_code.Identifier(complexProperty.Name, capitalize:=True)). + AppendLine("ComplexProperty") + + Dim complexType = complexProperty.ComplexType + Using mainBuilder.Indent() + Dim declaringTypeVariable = "declaringType" + mainBuilder. + Append("Public Shared Function Create("). + Append(declaringTypeVariable). + Append(" As "). + Append(If(TypeOf complexProperty.DeclaringType Is IEntityType, "RuntimeEntityType", "RuntimeComplexType")). + AppendLine(") As RuntimeComplexProperty") + + Using mainBuilder.Indent() + Const complexPropertyVariable = "complexProperty" + Const complexTypeVariable = "complexType" + + Dim variables As New HashSet(Of String) From { + declaringTypeVariable, + complexPropertyVariable, + complexTypeVariable + } + + mainBuilder. + Append("Dim "). + Append(complexPropertyVariable). + Append(" = "). + Append(declaringTypeVariable). + Append(".AddComplexProperty("). + IncrementIndent(). + Append(_code.Literal(complexProperty.Name)). + AppendLine(","). + Append(_code.Literal(complexProperty.ClrType)). + AppendLine(","). + Append(_code.Literal(complexType.Name)). + AppendLine(","). + Append(_code.Literal(complexType.ClrType)) + + AddNamespace(complexProperty.ClrType, namespaces) + AddNamespace(complexType.ClrType, namespaces) + + Dim parameters As New VisualBasicRuntimeAnnotationCodeGeneratorParameters( + declaringTypeVariable, + topClassName, + mainBuilder, + methodBuilder, + namespaces, + variables) + + PropertyBaseParameters(complexProperty, parameters, skipType:=True) + + If complexProperty.IsNullable Then + mainBuilder. + AppendLine(","). + Append("nullable:="). + Append(_code.Literal(True)) + End If + + If complexProperty.IsCollection Then + mainBuilder. + AppendLine(","). + Append("collection:="). + Append(_code.Literal(True)) + End If + + Dim changeTrackingStrategy = complexType.GetChangeTrackingStrategy() + If changeTrackingStrategy <> ChangeTrackingStrategy.Snapshot Then + namespaces.Add(GetType(ChangeTrackingStrategy).Namespace) + + mainBuilder.AppendLine(","). + Append("changeTrackingStrategy:="). + Append(_code.Literal(DirectCast(changeTrackingStrategy, [Enum]))) + End If + + Dim indexerPropertyInfo = complexType.FindIndexerPropertyInfo() + If indexerPropertyInfo IsNot Nothing Then + mainBuilder. + AppendLine(","). + Append("indexerPropertyInfo:=RuntimeEntityType.FindIndexerProperty("). + Append(_code.Literal(complexType.ClrType)). + Append(")") + End If + + If complexType.IsPropertyBag Then + mainBuilder.AppendLine(","). + Append("propertyBag:="). + Append(_code.Literal(True)) + End If + + mainBuilder. + AppendLine(")"). + AppendLine(). + DecrementIndent() + + mainBuilder. + Append("Dim ").Append(complexTypeVariable).Append(" = "). + Append(complexPropertyVariable).AppendLine(".ComplexType") + + Dim complexTypeParameters = parameters.Cloner.WithTargetName(complexTypeVariable).Clone + Dim propertyVariables As New Dictionary(Of IProperty, String)() + + For Each [property] In complexType.GetProperties() + Create([property], propertyVariables, complexTypeParameters) + Next + + For Each nestedComplexProperty In complexType.GetComplexProperties() + mainBuilder. + Append(_code.Identifier(nestedComplexProperty.Name, capitalize:=True)). + Append("ComplexProperty"). + Append(".Create"). + Append("("). + Append(complexTypeVariable). + AppendLine(")") + Next + + CreateAnnotations( + complexType, + AddressOf _annotationCodeGenerator.Generate, + complexTypeParameters) + + CreateAnnotations( + complexProperty, + AddressOf _annotationCodeGenerator.Generate, + parameters.Cloner.WithTargetName(complexPropertyVariable).Clone()) + + mainBuilder. + Append("Return "). + AppendLine(complexPropertyVariable) + End Using + + mainBuilder.AppendLine("End Function") + End Using + + Using mainBuilder.Indent() + For Each nestedComplexProperty In complexType.GetComplexProperties() + CreateComplexProperty(nestedComplexProperty, mainBuilder, methodBuilder, namespaces, topClassName) + Next + End Using + + mainBuilder.AppendLine("End Class") + End Sub + Private Sub CreateForeignKey(aforeignKey As IForeignKey, foreignKeyNumber As Integer, mainBuilder As IndentedStringBuilder, diff --git a/EFCore.VisualBasic/build/net6.0/EFCoreVisualBasic.vb b/EFCore.VisualBasic/build/net8.0/EFCoreVisualBasic.vb similarity index 100% rename from EFCore.VisualBasic/build/net6.0/EFCoreVisualBasic.vb rename to EFCore.VisualBasic/build/net8.0/EFCoreVisualBasic.vb diff --git a/EFCore.VisualBasic/build/net6.0/EntityFrameworkCore.VisualBasic.targets b/EFCore.VisualBasic/build/net8.0/EntityFrameworkCore.VisualBasic.targets similarity index 100% rename from EFCore.VisualBasic/build/net6.0/EntityFrameworkCore.VisualBasic.targets rename to EFCore.VisualBasic/build/net8.0/EntityFrameworkCore.VisualBasic.targets diff --git a/Sandbox/Sandbox.vbproj b/Sandbox/Sandbox.vbproj index bf43a3e..3023fdd 100644 --- a/Sandbox/Sandbox.vbproj +++ b/Sandbox/Sandbox.vbproj @@ -2,16 +2,16 @@ Exe - net7.0 + net8.0 False On - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -30,6 +30,6 @@ - + diff --git a/Test/EFCore.Design.Tests.Shared/EFCore.Design.Tests.Shared.csproj b/Test/EFCore.Design.Tests.Shared/EFCore.Design.Tests.Shared.csproj index 4e8d2f4..6983f59 100644 --- a/Test/EFCore.Design.Tests.Shared/EFCore.Design.Tests.Shared.csproj +++ b/Test/EFCore.Design.Tests.Shared/EFCore.Design.Tests.Shared.csproj @@ -1,13 +1,13 @@  - net7.0 + net8.0 True - - + + diff --git a/Test/EFCore.Design.Tests.Shared/EntityFrameworkCore.VisualBasic.Test/Scaffolding/Internal/MyJsonGuidReaderWriter.cs b/Test/EFCore.Design.Tests.Shared/EntityFrameworkCore.VisualBasic.Test/Scaffolding/Internal/MyJsonGuidReaderWriter.cs index 8ddeb25..7be160d 100644 --- a/Test/EFCore.Design.Tests.Shared/EntityFrameworkCore.VisualBasic.Test/Scaffolding/Internal/MyJsonGuidReaderWriter.cs +++ b/Test/EFCore.Design.Tests.Shared/EntityFrameworkCore.VisualBasic.Test/Scaffolding/Internal/MyJsonGuidReaderWriter.cs @@ -6,7 +6,7 @@ namespace EntityFrameworkCore.VisualBasic.Scaffolding.Internal { public sealed class MyJsonGuidReaderWriter : JsonValueReaderWriter { - public override Guid FromJsonTyped(ref Utf8JsonReaderManager manager) + public override Guid FromJsonTyped(ref Utf8JsonReaderManager manager, object existingObject = null) => manager.CurrentReader.GetGuid(); public override void ToJsonTyped(Utf8JsonWriter writer, Guid value) diff --git a/Test/EFCore.VisualBasic.Test/EFCore.VisualBasic.Test.vbproj b/Test/EFCore.VisualBasic.Test/EFCore.VisualBasic.Test.vbproj index bebfda8..cafcb19 100644 --- a/Test/EFCore.VisualBasic.Test/EFCore.VisualBasic.Test.vbproj +++ b/Test/EFCore.VisualBasic.Test/EFCore.VisualBasic.Test.vbproj @@ -1,7 +1,7 @@  - net7.0 + net8.0 true false EntityFrameworkCore.VisualBasic @@ -26,19 +26,19 @@ - - + + all - - - - - - - - - + + + + + + + + + all diff --git a/Test/EFCore.VisualBasic.Test/Migrations/Design/VisualBasicMigrationOperationGeneratorTest.vb b/Test/EFCore.VisualBasic.Test/Migrations/Design/VisualBasicMigrationOperationGeneratorTest.vb index 08ec7d6..59950ba 100644 --- a/Test/EFCore.VisualBasic.Test/Migrations/Design/VisualBasicMigrationOperationGeneratorTest.vb +++ b/Test/EFCore.VisualBasic.Test/Migrations/Design/VisualBasicMigrationOperationGeneratorTest.vb @@ -3420,8 +3420,7 @@ mb.Sql(""-- close to me"")" Assert.Equal(expectedCode, code, ignoreLineEndingDifferences:=True) - Dim build = New BuildSource() With - { + Dim build = New BuildSource() With { .Sources = New Dictionary(Of String, String) From { { "Migration.vb", diff --git a/Test/EFCore.VisualBasic.Test/Migrations/Design/VisualBasicMigrationsGeneratorTests.vb b/Test/EFCore.VisualBasic.Test/Migrations/Design/VisualBasicMigrationsGeneratorTests.vb index e7e13ae..1f8cb43 100644 --- a/Test/EFCore.VisualBasic.Test/Migrations/Design/VisualBasicMigrationsGeneratorTests.vb +++ b/Test/EFCore.VisualBasic.Test/Migrations/Design/VisualBasicMigrationsGeneratorTests.vb @@ -823,57 +823,56 @@ End Namespace Assert.Equal(2, snapshot.Model.GetEntityTypes().Count()) End Sub - Public Sub Snapshot_with_default_values_are_round_tripped() Dim generator = CreateMigrationsCodeGenerator() Dim modelBuilder = FakeRelationalTestHelpers.Instance.CreateConventionBuilder() modelBuilder.Entity(Of EntityWithEveryPrimitive)( - Sub(eb) - eb.Property(Function(e) e.Boolean).HasDefaultValue(False) - eb.Property(Function(e) e.Byte).HasDefaultValue(Byte.MinValue) - eb.Property(Function(e) e.ByteArray).HasDefaultValue(New Byte() {0}) - eb.Property(Function(e) e.Char).HasDefaultValue("0"c) - eb.Property(Function(e) e.Date).HasDefaultValue(Date.MinValue) - eb.Property(Function(e) e.DateTimeOffset).HasDefaultValue(DateTimeOffset.MinValue) - eb.Property(Function(e) e.Decimal).HasDefaultValue(Decimal.MinValue) - eb.Property(Function(e) e.Double).HasDefaultValue(Double.MinValue) 'double.NegativeInfinity - eb.Property(Function(e) e.Enum).HasDefaultValue(Enum1.Default) - eb.Property(Function(e) e.NullableEnum).HasDefaultValue(Enum1.Default).HasConversion(Of String)() - eb.Property(Function(e) e.Guid).HasDefaultValue(Guid.NewGuid()) - eb.Property(Function(e) e.Int16).HasDefaultValue(Short.MaxValue) - eb.Property(Function(e) e.Int32).HasDefaultValue(Integer.MaxValue) - eb.Property(Function(e) e.Int64).HasDefaultValue(Long.MaxValue) - eb.Property(Function(e) e.Single).HasDefaultValue(Single.Epsilon) - eb.Property(Function(e) e.SByte).HasDefaultValue(SByte.MinValue) - eb.Property(Function(e) e.String).HasDefaultValue("""") - eb.Property(Function(e) e.TimeSpan).HasDefaultValue(TimeSpan.MaxValue) - eb.Property(Function(e) e.UInt16).HasDefaultValue(UShort.MinValue) - eb.Property(Function(e) e.UInt32).HasDefaultValue(UInteger.MinValue) - eb.Property(Function(e) e.UInt64).HasDefaultValue(ULong.MinValue) - eb.Property(Function(e) e.NullableBoolean).HasDefaultValue(True) - eb.Property(Function(e) e.NullableByte).HasDefaultValue(Byte.MaxValue) - eb.Property(Function(e) e.NullableChar).HasDefaultValue("'"c) - eb.Property(Function(e) e.NullableDate).HasDefaultValue(Date.MaxValue) - eb.Property(Function(e) e.NullableDateTimeOffset).HasDefaultValue(DateTimeOffset.MaxValue) - eb.Property(Function(e) e.NullableDecimal).HasDefaultValue(Decimal.MaxValue) - eb.Property(Function(e) e.NullableDouble).HasDefaultValue(0.6822871999174) - eb.Property(Function(e) e.NullableEnum).HasDefaultValue(Enum1.One Or Enum1.Two) - eb.Property(Function(e) e.NullableStringEnum).HasDefaultValue(Enum1.One).HasConversion(Of String)() - eb.Property(Function(e) e.NullableGuid).HasDefaultValue(New Guid) - eb.Property(Function(e) e.NullableInt16).HasDefaultValue(Short.MinValue) - eb.Property(Function(e) e.NullableInt32).HasDefaultValue(Integer.MinValue) - eb.Property(Function(e) e.NullableInt64).HasDefaultValue(Long.MinValue) - eb.Property(Function(e) e.NullableSingle).HasDefaultValue(0.3333333F) - eb.Property(Function(e) e.NullableSByte).HasDefaultValue(SByte.MinValue) - eb.Property(Function(e) e.NullableTimeSpan).HasDefaultValue(TimeSpan.MinValue.Add(New TimeSpan)) - eb.Property(Function(e) e.NullableUInt16).HasDefaultValue(UShort.MaxValue) - eb.Property(Function(e) e.NullableUInt32).HasDefaultValue(UInteger.MaxValue) - eb.Property(Function(e) e.NullableUInt64).HasDefaultValue(ULong.MaxValue) - - eb.HasKey(Function(e) e.Boolean) - End Sub) + Sub(eb) + eb.Property(Function(e) e.Boolean).HasDefaultValue(False) + eb.Property(Function(e) e.Byte).HasDefaultValue(Byte.MinValue) + eb.Property(Function(e) e.ByteArray).HasDefaultValue(New Byte() {0}) + eb.Property(Function(e) e.Char).HasDefaultValue("0"c) + eb.Property(Function(e) e.Date).HasDefaultValue(Date.MinValue) + eb.Property(Function(e) e.DateTimeOffset).HasDefaultValue(DateTimeOffset.MinValue) + eb.Property(Function(e) e.Decimal).HasDefaultValue(Decimal.MinValue) + eb.Property(Function(e) e.Double).HasDefaultValue(Double.MinValue) 'double.NegativeInfinity + eb.Property(Function(e) e.Enum).HasDefaultValue(Enum1.Default) + eb.Property(Function(e) e.NullableEnum).HasDefaultValue(Enum1.Default).HasConversion(Of String)() + eb.Property(Function(e) e.Guid).HasDefaultValue(Guid.NewGuid()) + eb.Property(Function(e) e.Int16).HasDefaultValue(Short.MaxValue) + eb.Property(Function(e) e.Int32).HasDefaultValue(Integer.MaxValue) + eb.Property(Function(e) e.Int64).HasDefaultValue(Long.MaxValue) + eb.Property(Function(e) e.Single).HasDefaultValue(Single.Epsilon) + eb.Property(Function(e) e.SByte).HasDefaultValue(SByte.MinValue) + eb.Property(Function(e) e.String).HasDefaultValue("""") + eb.Property(Function(e) e.TimeSpan).HasDefaultValue(TimeSpan.MaxValue) + eb.Property(Function(e) e.UInt16).HasDefaultValue(UShort.MinValue) + eb.Property(Function(e) e.UInt32).HasDefaultValue(UInteger.MinValue) + eb.Property(Function(e) e.UInt64).HasDefaultValue(ULong.MinValue) + eb.Property(Function(e) e.NullableBoolean).HasDefaultValue(True) + eb.Property(Function(e) e.NullableByte).HasDefaultValue(Byte.MaxValue) + eb.Property(Function(e) e.NullableChar).HasDefaultValue("'"c) + eb.Property(Function(e) e.NullableDate).HasDefaultValue(Date.MaxValue) + eb.Property(Function(e) e.NullableDateTimeOffset).HasDefaultValue(DateTimeOffset.MaxValue) + eb.Property(Function(e) e.NullableDecimal).HasDefaultValue(Decimal.MaxValue) + eb.Property(Function(e) e.NullableDouble).HasDefaultValue(0.6822871999174) + eb.Property(Function(e) e.NullableEnum).HasDefaultValue(Enum1.One Or Enum1.Two) + eb.Property(Function(e) e.NullableStringEnum).HasDefaultValue(Enum1.One).HasConversion(Of String)() + eb.Property(Function(e) e.NullableGuid).HasDefaultValue(New Guid) + eb.Property(Function(e) e.NullableInt16).HasDefaultValue(Short.MinValue) + eb.Property(Function(e) e.NullableInt32).HasDefaultValue(Integer.MinValue) + eb.Property(Function(e) e.NullableInt64).HasDefaultValue(Long.MinValue) + eb.Property(Function(e) e.NullableSingle).HasDefaultValue(0.3333333F) + eb.Property(Function(e) e.NullableSByte).HasDefaultValue(SByte.MinValue) + eb.Property(Function(e) e.NullableTimeSpan).HasDefaultValue(TimeSpan.MinValue.Add(New TimeSpan)) + eb.Property(Function(e) e.NullableUInt16).HasDefaultValue(UShort.MaxValue) + eb.Property(Function(e) e.NullableUInt32).HasDefaultValue(UInteger.MaxValue) + eb.Property(Function(e) e.NullableUInt64).HasDefaultValue(ULong.MaxValue) + + eb.HasKey(Function(e) e.Boolean) + End Sub) Dim finalizedModel = modelBuilder.FinalizeModel(designTime:=True) @@ -970,6 +969,96 @@ End Namespace Two = 2 End Enum + + Public Sub Complex_properties_are_genered_in_snapshot() + + Dim generator = CreateMigrationsCodeGenerator() + + Dim modelBuilder = FakeRelationalTestHelpers.Instance.CreateConventionBuilder() + modelBuilder.Model.RemoveAnnotation(CoreAnnotationNames.ProductVersion) + + modelBuilder.Entity(Of EntityWithOneProperty)( + Sub(e) + e.ComplexProperty(Function(eo) eo.EntityWithTwoProperties, + Sub(eb As ComplexPropertyBuilder(Of EntityWithTwoProperties)) + eb.Property(Function(x) x.AlternateId).HasColumnOrder(1) + eb.ComplexProperty(Function(x) x.EntityWithStringKey) + End Sub) + End Sub) + + Dim finalizedModel = modelBuilder.FinalizeModel(designTime:=True) + + Dim modelSnapshotCode = generator.GenerateSnapshot( + "MyNamespace", + GetType(MyContext), + "MySnapshot", + finalizedModel) + + Assert.Equal( + +Imports System.Collections.Generic +Imports EntityFrameworkCore.VisualBasic.Migrations.Design +Imports Microsoft.EntityFrameworkCore +Imports Microsoft.EntityFrameworkCore.Infrastructure +Imports Microsoft.EntityFrameworkCore.Metadata +Imports Microsoft.EntityFrameworkCore.Migrations + +Namespace Global.MyNamespace + + Partial Class MySnapshot + Inherits ModelSnapshot + + Protected Overrides Sub BuildModel(modelBuilder As ModelBuilder) + + modelBuilder.Entity("EntityFrameworkCore.VisualBasic.Migrations.Design.VisualBasicMigrationsGeneratorTests+EntityWithOneProperty", + Sub(b) + b.Property(Of Integer)("Id"). + ValueGeneratedOnAdd(). + HasColumnType("default_int_mapping") + + b.ComplexProperty(Of Dictionary(Of String, Object))("EntityWithTwoProperties", "EntityFrameworkCore.VisualBasic.Migrations.Design.VisualBasicMigrationsGeneratorTests+EntityWithOneProperty.EntityWithTwoProperties#EntityWithTwoProperties", + Sub(b1) + b1.Property(Of Integer)("AlternateId"). + HasColumnType("default_int_mapping"). + HasColumnOrder(1) + + b1.Property(Of Integer)("Id"). + HasColumnType("default_int_mapping") + + b1.ComplexProperty(Of Dictionary(Of String, Object))("EntityWithStringKey", "EntityFrameworkCore.VisualBasic.Migrations.Design.VisualBasicMigrationsGeneratorTests+EntityWithOneProperty.EntityWithTwoProperties#EntityWithTwoProperties.EntityWithStringKey#EntityWithStringKey", + Sub(b2) + b2.Property(Of String)("Id"). + HasColumnType("just_string(max)") + End Sub) + End Sub) + + b.HasKey("Id") + + b.ToTable("EntityWithOneProperty") + End Sub) + End Sub + End Class +End Namespace +]]>.Value, modelSnapshotCode, ignoreLineEndingDifferences:=True) + + Dim snapshot = CompileModelSnapshot(modelSnapshotCode, "MyNamespace.MySnapshot") + End Sub + + Private Class EntityWithOneProperty + Public Property Id As Integer + Public Property EntityWithTwoProperties As EntityWithTwoProperties + End Class + + Private Class EntityWithTwoProperties + Public Property Id As Integer + Public Property AlternateId As Integer + Public Property EntityWithStringKey As EntityWithStringKey + End Class + + Private Class EntityWithStringKey + Public Property Id As String + End Class + Private Function CompileModelSnapshot(modelSnapshotCode As String, modelSnapshotTypeName As String) As ModelSnapshot Dim build As New BuildSource With { .Sources = New Dictionary(Of String, String) From {{"MigrationSnapshot.vb", modelSnapshotCode}} diff --git a/Test/EFCore.VisualBasic.Test/Scaffolding/Internal/VisualBasicEntityTypeGeneratorTest.vb b/Test/EFCore.VisualBasic.Test/Scaffolding/Internal/VisualBasicEntityTypeGeneratorTest.vb index 00819fc..bcdf323 100644 --- a/Test/EFCore.VisualBasic.Test/Scaffolding/Internal/VisualBasicEntityTypeGeneratorTest.vb +++ b/Test/EFCore.VisualBasic.Test/Scaffolding/Internal/VisualBasicEntityTypeGeneratorTest.vb @@ -2863,9 +2863,9 @@ End Namespace Yield annotation Next - Dim entityType1 = table.EntityTypeMappings.First().EntityType + Dim entityType = table.EntityTypeMappings.First().TypeBase - For Each annotation In entityType1.GetAnnotations().Where(Function(a) a.Name = "Custom:EntityAnnotation") + For Each annotation In entityType.GetAnnotations().Where(Function(a) a.Name = "Custom:EntityAnnotation") Yield annotation Next End Function diff --git a/Test/EFCore.VisualBasic.Test/Scaffolding/Internal/VisualBasicRuntimeModelCodeGeneratorTest.vb b/Test/EFCore.VisualBasic.Test/Scaffolding/Internal/VisualBasicRuntimeModelCodeGeneratorTest.vb index e65a54f..bf46488 100644 --- a/Test/EFCore.VisualBasic.Test/Scaffolding/Internal/VisualBasicRuntimeModelCodeGeneratorTest.vb +++ b/Test/EFCore.VisualBasic.Test/Scaffolding/Internal/VisualBasicRuntimeModelCodeGeneratorTest.vb @@ -1,4 +1,5 @@ Imports System.ComponentModel +Imports System.ComponentModel.DataAnnotations.Schema Imports System.Data Imports System.Linq.Expressions Imports System.Reflection @@ -1038,7 +1039,7 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.Columns.Add("PrincipalId", principalIdColumnBase) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+DependentBase", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase As New TableMappingBase(Of ColumnMappingBase)(dependentBase, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase, False) defaultTableMappings.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("PrincipalAlternateId"), ColumnBase(Of ColumnMappingBase)), dependentBase.FindProperty("PrincipalAlternateId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("PrincipalId"), ColumnBase(Of ColumnMappingBase)), dependentBase.FindProperty("PrincipalId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) @@ -1086,7 +1087,7 @@ Namespace TestNamespace Dim dependentBasebyteTableMapping As New TableMapping(dependentBase, dependentBasebyteTable, True) With { .IsSharedTablePrincipal = True } - dependentBasebyteTable.AddEntityTypeMapping(dependentBasebyteTableMapping, False) + dependentBasebyteTable.AddTypeMapping(dependentBasebyteTableMapping, False) tableMappings.Add(dependentBasebyteTableMapping) RelationalModel.CreateColumnMapping(dependentBasebyteTable.FindColumn("PrincipalAlternateId"), dependentBase.FindProperty("PrincipalAlternateId"), dependentBasebyteTableMapping) RelationalModel.CreateColumnMapping(dependentBasebyteTable.FindColumn("PrincipalId"), dependentBase.FindProperty("PrincipalId"), dependentBasebyteTableMapping) @@ -1098,7 +1099,7 @@ Namespace TestNamespace Dim defaultTableMappings0 As New List(Of TableMappingBase(Of ColumnMappingBase))() dependentDerived.SetRuntimeAnnotation("Relational:DefaultMappings", defaultTableMappings0) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase0 As New TableMappingBase(Of ColumnMappingBase)(dependentDerived, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase0, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase0, False) defaultTableMappings0.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase0) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("PrincipalAlternateId"), ColumnBase(Of ColumnMappingBase)), dependentDerived.FindProperty("PrincipalAlternateId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase0) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("PrincipalId"), ColumnBase(Of ColumnMappingBase)), dependentDerived.FindProperty("PrincipalId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase0) @@ -1112,7 +1113,7 @@ Namespace TestNamespace Dim dependentBasebyteTableMapping0 As New TableMapping(dependentDerived, dependentBasebyteTable, True) With { .IsSharedTablePrincipal = False } - dependentBasebyteTable.AddEntityTypeMapping(dependentBasebyteTableMapping0, False) + dependentBasebyteTable.AddTypeMapping(dependentBasebyteTableMapping0, False) tableMappings0.Add(dependentBasebyteTableMapping0) RelationalModel.CreateColumnMapping(dependentBasebyteTable.FindColumn("PrincipalAlternateId"), dependentDerived.FindProperty("PrincipalAlternateId"), dependentBasebyteTableMapping0) RelationalModel.CreateColumnMapping(dependentBasebyteTable.FindColumn("PrincipalId"), dependentDerived.FindProperty("PrincipalId"), dependentBasebyteTableMapping0) @@ -1146,7 +1147,7 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("Point", pointColumnBase) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase As New TableMappingBase(Of ColumnMappingBase)(principalBase, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase, False) defaultTableMappings1.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("AlternateId"), ColumnBase(Of ColumnMappingBase)), principalBase.FindProperty("AlternateId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), principalBase.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) @@ -1211,7 +1212,7 @@ Namespace TestNamespace Dim principalBaseTableMapping As New TableMapping(principalBase, principalBaseTable, True) With { .IsSharedTablePrincipal = True } - principalBaseTable.AddEntityTypeMapping(principalBaseTableMapping, False) + principalBaseTable.AddTypeMapping(principalBaseTableMapping, False) tableMappings1.Add(principalBaseTableMapping) RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("AlternateId"), principalBase.FindProperty("AlternateId"), principalBaseTableMapping) RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Id"), principalBase.FindProperty("Id"), principalBaseTableMapping) @@ -1238,7 +1239,7 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeTableBase.Columns.Add("PrincipalBaseId", principalBaseIdColumnBase) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase.Owned#OwnedType", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeMappingBase As New TableMappingBase(Of ColumnMappingBase)(ownedType, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeMappingBase, False) defaultTableMappings2.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeTableBase.FindColumn("PrincipalBaseAlternateId"), ColumnBase(Of ColumnMappingBase)), ownedType.FindProperty("PrincipalBaseAlternateId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeTableBase.FindColumn("PrincipalBaseId"), ColumnBase(Of ColumnMappingBase)), ownedType.FindProperty("PrincipalBaseId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeMappingBase) @@ -1251,7 +1252,7 @@ Namespace TestNamespace .IsSharedTablePrincipal = False, .IsSplitEntityTypePrincipal = True } - principalBaseTable.AddEntityTypeMapping(principalBaseTableMapping0, False) + principalBaseTable.AddTypeMapping(principalBaseTableMapping0, False) tableMappings2.Add(principalBaseTableMapping0) principalBaseTable.AddRowInternalForeignKey(ownedType, RelationalModel.GetForeignKey(Me, "EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase.Owned#OwnedType", @@ -1282,7 +1283,7 @@ Namespace TestNamespace Dim detailsTableMapping As New TableMapping(ownedType, detailsTable, True) With { .IsSplitEntityTypePrincipal = False } - detailsTable.AddEntityTypeMapping(detailsTableMapping, False) + detailsTable.AddTypeMapping(detailsTableMapping, False) tableMappings2.Add(detailsTableMapping) RelationalModel.CreateColumnMapping(detailsTable.FindColumn("PrincipalBaseAlternateId"), ownedType.FindProperty("PrincipalBaseAlternateId"), detailsTableMapping) RelationalModel.CreateColumnMapping(detailsTable.FindColumn("PrincipalBaseId"), ownedType.FindProperty("PrincipalBaseId"), detailsTableMapping) @@ -1293,7 +1294,7 @@ Namespace TestNamespace Dim defaultTableMappings3 As New List(Of TableMappingBase(Of ColumnMappingBase))() principalDerived.SetRuntimeAnnotation("Relational:DefaultMappings", defaultTableMappings3) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0 As New TableMappingBase(Of ColumnMappingBase)(principalDerived, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase, False) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0, False) defaultTableMappings3.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("AlternateId"), ColumnBase(Of ColumnMappingBase)), principalDerived.FindProperty("AlternateId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), principalDerived.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0) @@ -1312,7 +1313,7 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.Columns.Add("Id", idColumnBase1) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalDerived>", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase As New TableMappingBase(Of ColumnMappingBase)(principalDerived, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase, False) defaultTableMappings4.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("AlternateId"), ColumnBase(Of ColumnMappingBase)), principalDerived.FindProperty("AlternateId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), principalDerived.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) @@ -1322,7 +1323,7 @@ Namespace TestNamespace Dim principalBaseTableMapping1 As New TableMapping(principalDerived, principalBaseTable, False) With { .IsSharedTablePrincipal = False } - principalBaseTable.AddEntityTypeMapping(principalBaseTableMapping1, False) + principalBaseTable.AddTypeMapping(principalBaseTableMapping1, False) tableMappings3.Add(principalBaseTableMapping1) RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("AlternateId"), principalDerived.FindProperty("AlternateId"), principalBaseTableMapping1) RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Id"), principalDerived.FindProperty("Id"), principalBaseTableMapping1) @@ -1361,7 +1362,7 @@ Namespace TestNamespace principalDerivedTable.Indexes.Add("IX_PrincipalDerived_AlternateId_DerivedId", iX_PrincipalDerived_AlternateId_DerivedId) relationalModel.Tables.Add(("PrincipalDerived", Nothing), principalDerivedTable) Dim principalDerivedTableMapping As New TableMapping(principalDerived, principalDerivedTable, True) - principalDerivedTable.AddEntityTypeMapping(principalDerivedTableMapping, False) + principalDerivedTable.AddTypeMapping(principalDerivedTableMapping, False) tableMappings3.Add(principalDerivedTableMapping) RelationalModel.CreateColumnMapping(principalDerivedTable.FindColumn("AlternateId"), principalDerived.FindProperty("AlternateId"), principalDerivedTableMapping) RelationalModel.CreateColumnMapping(principalDerivedTable.FindColumn("DerivedId"), principalDerived.FindProperty("Id"), principalDerivedTableMapping) @@ -1385,7 +1386,7 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeTableBase.Columns.Add("PrincipalDerived>Id", principalDerivedDependentBasebyteIdColumnBase) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalDerived>.ManyOwned#OwnedType", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeMappingBase As New TableMappingBase(Of ColumnMappingBase)(ownedType0, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeMappingBase, False) defaultTableMappings5.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), ownedType0.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeTableBase.FindColumn("PrincipalDerived>AlternateId"), ColumnBase(Of ColumnMappingBase)), ownedType0.FindProperty("PrincipalDerivedAlternateId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeMappingBase) @@ -1418,7 +1419,7 @@ Namespace TestNamespace manyOwnedTable.UniqueConstraints.Add("PK_ManyOwned", pK_ManyOwned) relationalModel.Tables.Add(("ManyOwned", Nothing), manyOwnedTable) Dim manyOwnedTableMapping As New TableMapping(ownedType0, manyOwnedTable, True) - manyOwnedTable.AddEntityTypeMapping(manyOwnedTableMapping, False) + manyOwnedTable.AddTypeMapping(manyOwnedTableMapping, False) tableMappings4.Add(manyOwnedTableMapping) RelationalModel.CreateColumnMapping(manyOwnedTable.FindColumn("Id"), ownedType0.FindProperty("Id"), manyOwnedTableMapping) RelationalModel.CreateColumnMapping(manyOwnedTable.FindColumn("PrincipalDerived>AlternateId"), ownedType0.FindProperty("PrincipalDerivedAlternateId"), manyOwnedTableMapping) @@ -1445,7 +1446,7 @@ Namespace TestNamespace principalBasePrincipalDerivedDependentBasebyteTableBase.Columns.Add("rowid", rowidColumnBase) relationalModel.DefaultTables.Add("PrincipalBasePrincipalDerived>", principalBasePrincipalDerivedDependentBasebyteTableBase) Dim principalBasePrincipalDerivedDependentBasebyteMappingBase As New TableMappingBase(Of ColumnMappingBase)(principalBasePrincipalDerivedDependentBasebyte, principalBasePrincipalDerivedDependentBasebyteTableBase, True) - principalBasePrincipalDerivedDependentBasebyteTableBase.AddEntityTypeMapping(principalBasePrincipalDerivedDependentBasebyteMappingBase, False) + principalBasePrincipalDerivedDependentBasebyteTableBase.AddTypeMapping(principalBasePrincipalDerivedDependentBasebyteMappingBase, False) defaultTableMappings6.Add(principalBasePrincipalDerivedDependentBasebyteMappingBase) RelationalModel.CreateColumnMapping(DirectCast(principalBasePrincipalDerivedDependentBasebyteTableBase.FindColumn("DerivedsAlternateId"), ColumnBase(Of ColumnMappingBase)), principalBasePrincipalDerivedDependentBasebyte.FindProperty("DerivedsAlternateId"), principalBasePrincipalDerivedDependentBasebyteMappingBase) RelationalModel.CreateColumnMapping(DirectCast(principalBasePrincipalDerivedDependentBasebyteTableBase.FindColumn("DerivedsId"), ColumnBase(Of ColumnMappingBase)), principalBasePrincipalDerivedDependentBasebyte.FindProperty("DerivedsId"), principalBasePrincipalDerivedDependentBasebyteMappingBase) @@ -1486,7 +1487,7 @@ Namespace TestNamespace principalBasePrincipalDerivedDependentBasebyteTable.Indexes.Add("IX_PrincipalBasePrincipalDerived>_PrincipalsId_PrincipalsAlternateId", iX_PrincipalBasePrincipalDerivedDependentBasebyte_PrincipalsId_PrincipalsAlternateId) relationalModel.Tables.Add(("PrincipalBasePrincipalDerived>", Nothing), principalBasePrincipalDerivedDependentBasebyteTable) Dim principalBasePrincipalDerivedDependentBasebyteTableMapping As New TableMapping(principalBasePrincipalDerivedDependentBasebyte, principalBasePrincipalDerivedDependentBasebyteTable, True) - principalBasePrincipalDerivedDependentBasebyteTable.AddEntityTypeMapping(principalBasePrincipalDerivedDependentBasebyteTableMapping, False) + principalBasePrincipalDerivedDependentBasebyteTable.AddTypeMapping(principalBasePrincipalDerivedDependentBasebyteTableMapping, False) tableMappings5.Add(principalBasePrincipalDerivedDependentBasebyteTableMapping) RelationalModel.CreateColumnMapping(principalBasePrincipalDerivedDependentBasebyteTable.FindColumn("DerivedsAlternateId"), principalBasePrincipalDerivedDependentBasebyte.FindProperty("DerivedsAlternateId"), principalBasePrincipalDerivedDependentBasebyteTableMapping) RelationalModel.CreateColumnMapping(principalBasePrincipalDerivedDependentBasebyteTable.FindColumn("DerivedsId"), principalBasePrincipalDerivedDependentBasebyte.FindProperty("DerivedsId"), principalBasePrincipalDerivedDependentBasebyteTableMapping) @@ -1909,7 +1910,7 @@ Namespace TestNamespace "Details", GetType(String), propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetProperty("Details", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), - fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetField("_Details", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetField("_details", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), propertyAccessMode:=PropertyAccessMode.Field, nullable:=True) @@ -1936,7 +1937,7 @@ Namespace TestNamespace Dim context = entityType.AddServiceProperty( "Context", propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetProperty("Context", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), - serviceType:=GetType(Microsoft.EntityFrameworkCore.DbContext)) + serviceType:=GetType(DbContext)) Dim key = entityType.AddKey( {principalBaseId, principalBaseAlternateId}) @@ -2047,7 +2048,7 @@ Namespace TestNamespace "Details", GetType(String), propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetProperty("Details", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), - fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetField("_Details", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetField("_details", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), nullable:=True) details.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) @@ -2062,7 +2063,7 @@ Namespace TestNamespace Dim context = entityType.AddServiceProperty( "Context", propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetProperty("Context", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), - serviceType:=GetType(Microsoft.EntityFrameworkCore.DbContext)) + serviceType:=GetType(DbContext)) Dim key = entityType.AddKey( {principalDerivedId, principalDerivedAlternateId, id}) @@ -2502,7 +2503,9 @@ End Namespace Assert.False(referenceOwnedType.IsMemoryOptimized()) Assert.IsType(Of ConstructorBinding)(referenceOwnedType.ConstructorBinding) Assert.Null(referenceOwnedType.FindIndexerPropertyInfo()) - Assert.Equal(ChangeTrackingStrategy.ChangingAndChangedNotificationsWithOriginalValues, referenceOwnedType.GetChangeTrackingStrategy()) + Assert.Equal( + ChangeTrackingStrategy.ChangingAndChangedNotificationsWithOriginalValues, + referenceOwnedType.GetChangeTrackingStrategy()) Assert.Null(referenceOwnedType.GetQueryFilter()) Assert.Null(referenceOwnedType(CoreAnnotationNames.PropertyAccessMode)) Assert.Null(referenceOwnedType(CoreAnnotationNames.NavigationAccessMode)) @@ -2909,7 +2912,7 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.Columns.Add("PrincipalId", principalIdColumnBase) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+DependentBase", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase As New TableMappingBase(Of ColumnMappingBase)(dependentBase, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase, False) defaultTableMappings.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("PrincipalAlternateId"), ColumnBase(Of ColumnMappingBase)), dependentBase.FindProperty("PrincipalAlternateId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("PrincipalId"), ColumnBase(Of ColumnMappingBase)), dependentBase.FindProperty("PrincipalId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) @@ -2957,7 +2960,7 @@ Namespace TestNamespace Dim dependentBasebyteTableMapping As New TableMapping(dependentBase, dependentBasebyteTable, True) With { .IsSharedTablePrincipal = True } - dependentBasebyteTable.AddEntityTypeMapping(dependentBasebyteTableMapping, False) + dependentBasebyteTable.AddTypeMapping(dependentBasebyteTableMapping, False) tableMappings.Add(dependentBasebyteTableMapping) RelationalModel.CreateColumnMapping(dependentBasebyteTable.FindColumn("PrincipalAlternateId"), dependentBase.FindProperty("PrincipalAlternateId"), dependentBasebyteTableMapping) RelationalModel.CreateColumnMapping(dependentBasebyteTable.FindColumn("PrincipalId"), dependentBase.FindProperty("PrincipalId"), dependentBasebyteTableMapping) @@ -2969,7 +2972,7 @@ Namespace TestNamespace Dim defaultTableMappings0 As New List(Of TableMappingBase(Of ColumnMappingBase))() dependentDerived.SetRuntimeAnnotation("Relational:DefaultMappings", defaultTableMappings0) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase0 As New TableMappingBase(Of ColumnMappingBase)(dependentDerived, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase0, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase0, False) defaultTableMappings0.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase0) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("PrincipalAlternateId"), ColumnBase(Of ColumnMappingBase)), dependentDerived.FindProperty("PrincipalAlternateId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase0) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("PrincipalId"), ColumnBase(Of ColumnMappingBase)), dependentDerived.FindProperty("PrincipalId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase0) @@ -2983,7 +2986,7 @@ Namespace TestNamespace Dim dependentBasebyteTableMapping0 As New TableMapping(dependentDerived, dependentBasebyteTable, True) With { .IsSharedTablePrincipal = False } - dependentBasebyteTable.AddEntityTypeMapping(dependentBasebyteTableMapping0, False) + dependentBasebyteTable.AddTypeMapping(dependentBasebyteTableMapping0, False) tableMappings0.Add(dependentBasebyteTableMapping0) RelationalModel.CreateColumnMapping(dependentBasebyteTable.FindColumn("PrincipalAlternateId"), dependentDerived.FindProperty("PrincipalAlternateId"), dependentBasebyteTableMapping0) RelationalModel.CreateColumnMapping(dependentBasebyteTable.FindColumn("PrincipalId"), dependentDerived.FindProperty("PrincipalId"), dependentBasebyteTableMapping0) @@ -3019,7 +3022,7 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("Point", pointColumnBase) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase As New TableMappingBase(Of ColumnMappingBase)(principalBase, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase, False) defaultTableMappings1.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("AlternateId"), ColumnBase(Of ColumnMappingBase)), principalBase.FindProperty("AlternateId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), principalBase.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) @@ -3086,7 +3089,7 @@ Namespace TestNamespace Dim principalBaseTableMapping As New TableMapping(principalBase, principalBaseTable, True) With { .IsSharedTablePrincipal = True } - principalBaseTable.AddEntityTypeMapping(principalBaseTableMapping, False) + principalBaseTable.AddTypeMapping(principalBaseTableMapping, False) tableMappings1.Add(principalBaseTableMapping) RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("AlternateId"), principalBase.FindProperty("AlternateId"), principalBaseTableMapping) RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Id"), principalBase.FindProperty("Id"), principalBaseTableMapping) @@ -3106,7 +3109,7 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeTableBase.Columns.Add("Owned", ownedColumnBase) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase.Owned#OwnedType", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeMappingBase As New TableMappingBase(Of ColumnMappingBase)(ownedType, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeMappingBase, False) defaultTableMappings2.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseOwnedOwnedTypeMappingBase) Dim tableMappings2 As New List(Of TableMapping)() @@ -3114,7 +3117,7 @@ Namespace TestNamespace Dim principalBaseTableMapping0 As New TableMapping(ownedType, principalBaseTable, True) With { .IsSharedTablePrincipal = False } - principalBaseTable.AddEntityTypeMapping(principalBaseTableMapping0, False) + principalBaseTable.AddTypeMapping(principalBaseTableMapping0, False) tableMappings2.Add(principalBaseTableMapping0) principalBaseTable.AddRowInternalForeignKey(ownedType, RelationalModel.GetForeignKey(Me, "EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase.Owned#OwnedType", @@ -3127,7 +3130,7 @@ Namespace TestNamespace Dim defaultTableMappings3 As New List(Of TableMappingBase(Of ColumnMappingBase))() principalDerived.SetRuntimeAnnotation("Relational:DefaultMappings", defaultTableMappings3) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0 As New TableMappingBase(Of ColumnMappingBase)(principalDerived, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0, False) defaultTableMappings3.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("AlternateId"), ColumnBase(Of ColumnMappingBase)), principalDerived.FindProperty("AlternateId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), principalDerived.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0) @@ -3143,7 +3146,7 @@ Namespace TestNamespace Dim principalBaseTableMapping1 As New TableMapping(principalDerived, principalBaseTable, True) With { .IsSharedTablePrincipal = False } - principalBaseTable.AddEntityTypeMapping(principalBaseTableMapping1, False) + principalBaseTable.AddTypeMapping(principalBaseTableMapping1, False) tableMappings3.Add(principalBaseTableMapping1) RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("AlternateId"), principalDerived.FindProperty("AlternateId"), principalBaseTableMapping1) RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Id"), principalDerived.FindProperty("Id"), principalBaseTableMapping1) @@ -3165,7 +3168,7 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeTableBase.Columns.Add("ManyOwned", manyOwnedColumnBase) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalDerived>.ManyOwned#OwnedType", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeMappingBase As New TableMappingBase(Of ColumnMappingBase)(ownedType0, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeMappingBase, False) defaultTableMappings4.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteManyOwnedOwnedTypeMappingBase) Dim tableMappings4 As New List(Of TableMapping)() @@ -3173,7 +3176,7 @@ Namespace TestNamespace Dim principalBaseTableMapping2 As New TableMapping(ownedType0, principalBaseTable, True) With { .IsSharedTablePrincipal = False } - principalBaseTable.AddEntityTypeMapping(principalBaseTableMapping2, True) + principalBaseTable.AddTypeMapping(principalBaseTableMapping2, True) tableMappings4.Add(principalBaseTableMapping2) principalBaseTable.AddRowInternalForeignKey(ownedType0, RelationalModel.GetForeignKey(Me, "EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalDerived>.ManyOwned#OwnedType", @@ -3200,7 +3203,7 @@ Namespace TestNamespace principalBasePrincipalDerivedDependentBasebyteTableBase.Columns.Add("rowid", rowidColumnBase) relationalModel.DefaultTables.Add("PrincipalBasePrincipalDerived>", principalBasePrincipalDerivedDependentBasebyteTableBase) Dim principalBasePrincipalDerivedDependentBasebyteMappingBase As New TableMappingBase(Of ColumnMappingBase)(principalBasePrincipalDerivedDependentBasebyte, principalBasePrincipalDerivedDependentBasebyteTableBase, True) - principalBasePrincipalDerivedDependentBasebyteTableBase.AddEntityTypeMapping(principalBasePrincipalDerivedDependentBasebyteMappingBase, False) + principalBasePrincipalDerivedDependentBasebyteTableBase.AddTypeMapping(principalBasePrincipalDerivedDependentBasebyteMappingBase, False) defaultTableMappings5.Add(principalBasePrincipalDerivedDependentBasebyteMappingBase) RelationalModel.CreateColumnMapping(DirectCast(principalBasePrincipalDerivedDependentBasebyteTableBase.FindColumn("DerivedsAlternateId"), ColumnBase(Of ColumnMappingBase)), principalBasePrincipalDerivedDependentBasebyte.FindProperty("DerivedsAlternateId"), principalBasePrincipalDerivedDependentBasebyteMappingBase) RelationalModel.CreateColumnMapping(DirectCast(principalBasePrincipalDerivedDependentBasebyteTableBase.FindColumn("DerivedsId"), ColumnBase(Of ColumnMappingBase)), principalBasePrincipalDerivedDependentBasebyte.FindProperty("DerivedsId"), principalBasePrincipalDerivedDependentBasebyteMappingBase) @@ -3241,7 +3244,7 @@ Namespace TestNamespace principalBasePrincipalDerivedDependentBasebyteTable.Indexes.Add("IX_PrincipalBasePrincipalDerived>_PrincipalsId_PrincipalsAlternateId", iX_PrincipalBasePrincipalDerivedDependentBasebyte_PrincipalsId_PrincipalsAlternateId) relationalModel.Tables.Add(("PrincipalBasePrincipalDerived>", Nothing), principalBasePrincipalDerivedDependentBasebyteTable) Dim principalBasePrincipalDerivedDependentBasebyteTableMapping As New TableMapping(principalBasePrincipalDerivedDependentBasebyte, principalBasePrincipalDerivedDependentBasebyteTable, True) - principalBasePrincipalDerivedDependentBasebyteTable.AddEntityTypeMapping(principalBasePrincipalDerivedDependentBasebyteTableMapping, False) + principalBasePrincipalDerivedDependentBasebyteTable.AddTypeMapping(principalBasePrincipalDerivedDependentBasebyteTableMapping, False) tableMappings5.Add(principalBasePrincipalDerivedDependentBasebyteTableMapping) RelationalModel.CreateColumnMapping(principalBasePrincipalDerivedDependentBasebyteTable.FindColumn("DerivedsAlternateId"), principalBasePrincipalDerivedDependentBasebyte.FindProperty("DerivedsAlternateId"), principalBasePrincipalDerivedDependentBasebyteTableMapping) RelationalModel.CreateColumnMapping(principalBasePrincipalDerivedDependentBasebyteTable.FindColumn("DerivedsId"), principalBasePrincipalDerivedDependentBasebyte.FindProperty("DerivedsId"), principalBasePrincipalDerivedDependentBasebyteTableMapping) @@ -3609,7 +3612,7 @@ Namespace TestNamespace "Details", GetType(String), propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetProperty("Details", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), - fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetField("_Details", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetField("_details", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), propertyAccessMode:=PropertyAccessMode.Field, nullable:=True) details.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) @@ -3626,7 +3629,7 @@ Namespace TestNamespace Dim context = entityType.AddServiceProperty( "Context", propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetProperty("Context", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), - serviceType:=GetType(Microsoft.EntityFrameworkCore.DbContext)) + serviceType:=GetType(DbContext)) Dim key = entityType.AddKey( {principalBaseId, principalBaseAlternateId}) @@ -3719,7 +3722,7 @@ Namespace TestNamespace "Details", GetType(String), propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetProperty("Details", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), - fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetField("_Details", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetField("_details", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), nullable:=True) details.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) @@ -3734,7 +3737,7 @@ Namespace TestNamespace Dim context = entityType.AddServiceProperty( "Context", propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetProperty("Context", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), - serviceType:=GetType(Microsoft.EntityFrameworkCore.DbContext)) + serviceType:=GetType(DbContext)) Dim key = entityType.AddKey( {principalDerivedId, principalDerivedAlternateId, id}) @@ -4443,182 +4446,20 @@ End Namespace GetType(SqlServerNetTopologySuiteDesignTimeServices)) End Sub - Public Class BigContextWithJson - Inherits BigContext - - Public Sub New() - MyBase.New(jsonColumns:=True) - End Sub - End Class - - Public Class BigContext - Inherits SqlServerContextBase - - Private ReadOnly _jsonColumns As Boolean - - Public Sub New(Optional jsonColumns As Boolean = False) - _jsonColumns = jsonColumns - End Sub - - Protected Overrides Sub OnModelCreating(modelBuilder As ModelBuilder) - MyBase.OnModelCreating(modelBuilder) - - modelBuilder. - UseCollation("Latin1_General_CS_AS"). - UseIdentityColumns(3, 2) - - modelBuilder.Entity(Of PrincipalBase)( - Sub(eb) - If Not _jsonColumns Then - eb.Property(Function(e) e.Id). - UseIdentityColumn(2, 3). - Metadata. - SetColumnName("DerivedId", StoreObjectIdentifier. - Table("PrincipalDerived")) - End If - - eb.Property(Function(e) e.FlagsEnum2). - HasSentinel(AFlagsEnum.C Or AFlagsEnum.B) - - eb.Property(Function(e) e.AlternateId). - UsePropertyAccessMode(PropertyAccessMode.FieldDuringConstruction) - - eb.Property(Of Point)("Point"). - HasColumnType("geometry"). - HasDefaultValue(NtsGeometryServices.Instance.CreateGeometryFactory(srid:=0). - CreatePoint(New CoordinateZM(0, 0, 0, 0))). - HasConversion(Of CastingConverter(Of Point, Point), CustomValueComparer(Of Point), CustomValueComparer(Of Point))() - - eb.HasIndex(Function(e) New With {e.AlternateId, e.Id}) - - eb.HasKey(Function(e) New With {e.Id, e.AlternateId}).HasName("PK"). - IsClustered() - - eb.HasAlternateKey(Function(e) e.Id) - - eb.Property(Function(e) e.AlternateId).Metadata.SetJsonValueReaderWriterType( - If(_jsonColumns, - GetType(MyJsonGuidReaderWriter), - GetType(JsonGuidReaderWriter))) - - eb.OwnsOne( - Function(e) e.Owned, - Sub(ob) - ob.HasChangeTrackingStrategy(ChangeTrackingStrategy.ChangingAndChangedNotificationsWithOriginalValues) - ob.UsePropertyAccessMode(PropertyAccessMode.Field) - ob.Property(Function(e) e.Details). - IsSparse(). - UseCollation("Latin1_General_CI_AI") - - If _jsonColumns Then - ob.ToJson() - Else - ob.ToTable("PrincipalBase", "mySchema", - Sub(t) t.Property("PrincipalBaseId").UseIdentityColumn(2, 3)) - - ob.SplitToTable("Details", Sub(s) s.Property(Function(e) e.Details)) - - ob.HasData(New With { - .Number = 10, - .PrincipalBaseId = 1L, - .PrincipalBaseAlternateId = New Guid() - }) - End If - End Sub) - - eb.Navigation(Function(e) e.Owned). - IsRequired(). - HasField("_ownedField"). - UsePropertyAccessMode(PropertyAccessMode.Field) - - If Not _jsonColumns Then - eb.HasData(New PrincipalBase With {.Id = 1, .AlternateId = New Guid()}) - - eb.ToTable("PrincipalBase", "mySchema") - End If - End Sub) - - modelBuilder.Entity(Of PrincipalDerived(Of DependentBase(Of Byte?)))( - Sub(eb) - eb.HasOne(Function(e) e.Dependent). - WithOne(Function(e) e.Principal). - HasForeignKey(Of DependentBase(Of Byte?))(). - OnDelete(DeleteBehavior.ClientNoAction) - - eb.Navigation(Function(e) e.Dependent).AutoInclude().EnableLazyLoading(False) - - eb.OwnsMany(GetType(OwnedType).FullName, "ManyOwned", - Sub(ob) - If _jsonColumns Then - ob.ToJson() - Else - ob.ToTable("ManyOwned", Sub(t) t.IsMemoryOptimized().ExcludeFromMigrations()) - End If - End Sub) - - eb.HasMany(Function(e) e.Principals). - WithMany(Function(e) DirectCast(e.Deriveds, ICollection(Of PrincipalDerived(Of DependentBase(Of Byte?))))). - UsingEntity( - Sub(jb) - jb.ToTable(Function(tb) tb.HasComment("Join table")) - jb.Property(Of Byte())("rowid"). - IsRowVersion(). - HasComment("RowVersion"). - HasColumnOrder(1) - End Sub) - - eb.Navigation(Function(e) e.Principals).AutoInclude().EnableLazyLoading(False) - - If Not _jsonColumns Then - eb.ToTable("PrincipalDerived") - End If - End Sub) - - modelBuilder.Entity(Of DependentBase(Of Byte?))( - Sub(eb) - eb.Property(Of Byte?)("Id") - - eb.HasKey({"PrincipalId", "PrincipalAlternateId"}) - - eb.HasOne(Of PrincipalBase)(). - WithOne(). - HasForeignKey(Of DependentBase(Of Byte?))("PrincipalId"). - HasPrincipalKey(Of PrincipalBase)(Function(e) e.Id) - - eb.HasDiscriminator(Of Enum1)("EnumDiscriminator"). - HasValue(Enum1.One). - HasValue(Of DependentDerived(Of Byte?))(Enum1.Two). - IsComplete(False) - End Sub) - - modelBuilder.Entity(Of DependentDerived(Of Byte?))( - Sub(eb) - eb.Property(Of String)("Data"). - HasMaxLength(20). - IsFixedLength(). - IsUnicode(False) - - eb.Property(Of Decimal)("Money"). - HasPrecision(9, 3) - End Sub) - End Sub - End Class - - Public Sub TPC_model() + Public Sub ComplexTypes() - Dim rm1 = - + Dim ComplexTypesContextModel = Imports EntityFrameworkCore.VisualBasic.Scaffolding.Internal Imports Microsoft.EntityFrameworkCore.Infrastructure Imports Microsoft.EntityFrameworkCore.Metadata Namespace TestNamespace - - Public Partial Class TpcContextModel + + Public Partial Class ComplexTypesContextModel Inherits RuntimeModel - Private Shared _Instance As TpcContextModel + Private Shared _Instance As ComplexTypesContextModel Public Shared ReadOnly Property Instance As IModel Get Return _Instance @@ -4626,7 +4467,7 @@ Namespace TestNamespace End Property Shared Sub New() - Dim model As New TpcContextModel() + Dim model As New ComplexTypesContextModel() model.Initialize() model.Customize() _Instance = model @@ -4641,10 +4482,12 @@ Namespace TestNamespace End Namespace ]]>.Value - Dim rm2 = - + Dim ComplexTypesContextModelBuilder = Imports System Imports System.Collections.Generic +Imports System.Linq +Imports System.Reflection +Imports EntityFrameworkCore.VisualBasic.Scaffolding.Internal Imports Microsoft.EntityFrameworkCore Imports Microsoft.EntityFrameworkCore.Infrastructure Imports Microsoft.EntityFrameworkCore.Metadata @@ -4652,33 +4495,28 @@ Imports Microsoft.EntityFrameworkCore.Metadata.Internal Imports Microsoft.EntityFrameworkCore.Migrations Namespace TestNamespace - Public Partial Class TpcContextModel + Public Partial Class ComplexTypesContextModel Private Sub Initialize() - Dim dependentBase = DependentBaseEntityType.Create(Me) Dim principalBase = PrincipalBaseEntityType.Create(Me) Dim principalDerived = PrincipalDerivedEntityType.Create(Me, principalBase) - DependentBaseEntityType.CreateForeignKey1(dependentBase, principalDerived) PrincipalBaseEntityType.CreateForeignKey1(principalBase, principalBase) - PrincipalBaseEntityType.CreateForeignKey2(principalBase, principalDerived) - DependentBaseEntityType.CreateAnnotations(dependentBase) PrincipalBaseEntityType.CreateAnnotations(principalBase) PrincipalDerivedEntityType.CreateAnnotations(principalDerived) - Dim sequences As New SortedDictionary(Of (String, String), ISequence)() - Dim principalBaseSequence As New RuntimeSequence( - "PrincipalBaseSequence", + Dim functions As New SortedDictionary(Of String, IDbFunction)() + Dim principalBaseTvf As New RuntimeDbFunction( + "PrincipalBaseTvf", Me, - GetType(Long), - schema:="TPC", - modelSchemaIsNull:=True) + GetType(IQueryable(Of VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase)), + "PrincipalBaseTvf", + schema:="dbo") - sequences(("PrincipalBaseSequence", Nothing)) = principalBaseSequence + functions("PrincipalBaseTvf") = principalBaseTvf - AddAnnotation("Relational:Sequences", sequences) - AddAnnotation("Relational:DefaultSchema", "TPC") + AddAnnotation("Relational:DbFunctions", functions) AddAnnotation("Relational:MaxIdentifierLength", 128) AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn) AddRuntimeAnnotation("Relational:RelationalModel", CreateRelationalModel()) @@ -4687,61 +4525,13 @@ Namespace TestNamespace Private Function CreateRelationalModel() As IRelationalModel Dim relationalModel As New RelationalModel(Me) - Dim dependentBase = FindEntityType("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+DependentBase") - - Dim defaultTableMappings As New List(Of TableMappingBase(Of ColumnMappingBase))() - dependentBase.SetRuntimeAnnotation("Relational:DefaultMappings", defaultTableMappings) - Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase As New TableBase("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+DependentBase", Nothing, relationalModel) - Dim idColumnBase As New ColumnBase(Of ColumnMappingBase)("Id", "tinyint", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.Columns.Add("Id", idColumnBase) - Dim principalIdColumnBase As New ColumnBase(Of ColumnMappingBase)("PrincipalId", "bigint", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase) With { - .IsNullable = True - } - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.Columns.Add("PrincipalId", principalIdColumnBase) - relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+DependentBase", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase) - Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase As New TableMappingBase(Of ColumnMappingBase)(dependentBase, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase, False) - defaultTableMappings.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) - RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), dependentBase.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) - RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("PrincipalId"), ColumnBase(Of ColumnMappingBase)), dependentBase.FindProperty("PrincipalId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) - - Dim tableMappings As New List(Of TableMapping)() - dependentBase.SetRuntimeAnnotation("Relational:TableMappings", tableMappings) - Dim dependentBasebyteTable As New Table("DependentBase", "TPC", relationalModel) - Dim idColumn As New Column("Id", "tinyint", dependentBasebyteTable) - dependentBasebyteTable.Columns.Add("Id", idColumn) - Dim principalIdColumn As New Column("PrincipalId", "bigint", dependentBasebyteTable) With { - .IsNullable = True - } - dependentBasebyteTable.Columns.Add("PrincipalId", principalIdColumn) - Dim pK_DependentBasebyte As New UniqueConstraint("PK_DependentBase", dependentBasebyteTable, {idColumn}) - dependentBasebyteTable.PrimaryKey = pK_DependentBasebyte - Dim pK_DependentBasebyteUc = RelationalModel.GetKey(Me, - "EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+DependentBase", - {"Id"}) - pK_DependentBasebyte.MappedKeys.Add(pK_DependentBasebyteUc) - RelationalModel.GetOrCreateUniqueConstraints(pK_DependentBasebyteUc).Add(pK_DependentBasebyte) - dependentBasebyteTable.UniqueConstraints.Add("PK_DependentBase", pK_DependentBasebyte) - Dim iX_DependentBasebyte_PrincipalId As New TableIndex( - "IX_DependentBase_PrincipalId", dependentBasebyteTable, {principalIdColumn}, True) - Dim iX_DependentBasebyte_PrincipalIdIx = RelationalModel.GetIndex(Me, - "EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+DependentBase", - {"PrincipalId"}) - iX_DependentBasebyte_PrincipalId.MappedIndexes.Add(iX_DependentBasebyte_PrincipalIdIx) - RelationalModel.GetOrCreateTableIndexes(iX_DependentBasebyte_PrincipalIdIx).Add(iX_DependentBasebyte_PrincipalId) - dependentBasebyteTable.Indexes.Add("IX_DependentBase_PrincipalId", iX_DependentBasebyte_PrincipalId) - relationalModel.Tables.Add(("DependentBase", "TPC"), dependentBasebyteTable) - Dim dependentBasebyteTableMapping As New TableMapping(dependentBase, dependentBasebyteTable, True) - dependentBasebyteTable.AddEntityTypeMapping(dependentBasebyteTableMapping, False) - tableMappings.Add(dependentBasebyteTableMapping) - RelationalModel.CreateColumnMapping(dependentBasebyteTable.FindColumn("Id"), dependentBase.FindProperty("Id"), dependentBasebyteTableMapping) - RelationalModel.CreateColumnMapping(dependentBasebyteTable.FindColumn("PrincipalId"), dependentBase.FindProperty("PrincipalId"), dependentBasebyteTableMapping) - Dim principalBase = FindEntityType("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase") - Dim defaultTableMappings0 As New List(Of TableMappingBase(Of ColumnMappingBase))() - principalBase.SetRuntimeAnnotation("Relational:DefaultMappings", defaultTableMappings0) + Dim defaultTableMappings As New List(Of TableMappingBase(Of ColumnMappingBase))() + principalBase.SetRuntimeAnnotation("Relational:DefaultMappings", defaultTableMappings) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase As New TableBase("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase", Nothing, relationalModel) + Dim discriminatorColumnBase As New ColumnBase(Of ColumnMappingBase)("Discriminator", "nvarchar(55)", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("Discriminator", discriminatorColumnBase) Dim enum1ColumnBase As New ColumnBase(Of ColumnMappingBase)("Enum1", "int", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("Enum1", enum1ColumnBase) Dim enum2ColumnBase As New ColumnBase(Of ColumnMappingBase)("Enum2", "int", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) With { @@ -4752,20 +4542,1288 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("FlagsEnum1", flagsEnum1ColumnBase) Dim flagsEnum2ColumnBase As New ColumnBase(Of ColumnMappingBase)("FlagsEnum2", "int", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("FlagsEnum2", flagsEnum2ColumnBase) - Dim idColumnBase0 As New ColumnBase(Of ColumnMappingBase)("Id", "bigint", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("Id", idColumnBase0) + Dim idColumnBase As New ColumnBase(Of ColumnMappingBase)("Id", "bigint", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("Id", idColumnBase) Dim principalBaseIdColumnBase As New ColumnBase(Of ColumnMappingBase)("PrincipalBaseId", "bigint", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) With { .IsNullable = True } entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("PrincipalBaseId", principalBaseIdColumnBase) - Dim principalDerivedDependentBasebyteIdColumnBase As New ColumnBase(Of ColumnMappingBase)("PrincipalDerived>Id", "bigint", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) With { - .IsNullable = True - } - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("PrincipalDerived>Id", principalDerivedDependentBasebyteIdColumnBase) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) - Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase As New TableMappingBase(Of ColumnMappingBase)(principalBase, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase, False) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase, False) - defaultTableMappings0.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) + Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase As New TableMappingBase(Of ColumnMappingBase)(principalBase, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase, True) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase, False) + defaultTableMappings.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), principalBase.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("Discriminator"), ColumnBase(Of ColumnMappingBase)), principalBase.FindProperty("Discriminator"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("Enum1"), ColumnBase(Of ColumnMappingBase)), principalBase.FindProperty("Enum1"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("Enum2"), ColumnBase(Of ColumnMappingBase)), principalBase.FindProperty("Enum2"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("FlagsEnum1"), ColumnBase(Of ColumnMappingBase)), principalBase.FindProperty("FlagsEnum1"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("FlagsEnum2"), ColumnBase(Of ColumnMappingBase)), principalBase.FindProperty("FlagsEnum2"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("PrincipalBaseId"), ColumnBase(Of ColumnMappingBase)), principalBase.FindProperty("PrincipalBaseId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) + + Dim tableMappings As New List(Of TableMapping)() + principalBase.SetRuntimeAnnotation("Relational:TableMappings", tableMappings) + Dim principalBaseTable As New Table("PrincipalBase", Nothing, relationalModel) + Dim idColumn As New Column("Id", "bigint", principalBaseTable) + principalBaseTable.Columns.Add("Id", idColumn) + Dim deetsColumn As New Column("Deets", "varchar(64)", principalBaseTable) With { + .IsNullable = True + } + principalBaseTable.Columns.Add("Deets", deetsColumn) + Dim discriminatorColumn As New Column("Discriminator", "nvarchar(55)", principalBaseTable) + principalBaseTable.Columns.Add("Discriminator", discriminatorColumn) + Dim enum1Column As New Column("Enum1", "int", principalBaseTable) + principalBaseTable.Columns.Add("Enum1", enum1Column) + Dim enum2Column As New Column("Enum2", "int", principalBaseTable) With { + .IsNullable = True + } + principalBaseTable.Columns.Add("Enum2", enum2Column) + Dim flagsEnum1Column As New Column("FlagsEnum1", "int", principalBaseTable) + principalBaseTable.Columns.Add("FlagsEnum1", flagsEnum1Column) + Dim flagsEnum2Column As New Column("FlagsEnum2", "int", principalBaseTable) + principalBaseTable.Columns.Add("FlagsEnum2", flagsEnum2Column) + Dim owned_NumberColumn As New Column("Owned_Number", "int", principalBaseTable) + principalBaseTable.Columns.Add("Owned_Number", owned_NumberColumn) + Dim owned_Principal_AlternateIdColumn As New Column("Owned_Principal_AlternateId", "uniqueidentifier", principalBaseTable) + principalBaseTable.Columns.Add("Owned_Principal_AlternateId", owned_Principal_AlternateIdColumn) + Dim owned_Principal_Enum1Column As New Column("Owned_Principal_Enum1", "int", principalBaseTable) + principalBaseTable.Columns.Add("Owned_Principal_Enum1", owned_Principal_Enum1Column) + Dim owned_Principal_Enum2Column As New Column("Owned_Principal_Enum2", "int", principalBaseTable) With { + .IsNullable = True + } + principalBaseTable.Columns.Add("Owned_Principal_Enum2", owned_Principal_Enum2Column) + Dim owned_Principal_FlagsEnum1Column As New Column("Owned_Principal_FlagsEnum1", "int", principalBaseTable) + principalBaseTable.Columns.Add("Owned_Principal_FlagsEnum1", owned_Principal_FlagsEnum1Column) + Dim owned_Principal_FlagsEnum2Column As New Column("Owned_Principal_FlagsEnum2", "int", principalBaseTable) + principalBaseTable.Columns.Add("Owned_Principal_FlagsEnum2", owned_Principal_FlagsEnum2Column) + Dim owned_Principal_IdColumn As New Column("Owned_Principal_Id", "bigint", principalBaseTable) With { + .IsNullable = True + } + principalBaseTable.Columns.Add("Owned_Principal_Id", owned_Principal_IdColumn) + Dim principalBaseIdColumn As New Column("PrincipalBaseId", "bigint", principalBaseTable) With { + .IsNullable = True + } + principalBaseTable.Columns.Add("PrincipalBaseId", principalBaseIdColumn) + Dim pK_PrincipalBase As New UniqueConstraint("PK_PrincipalBase", principalBaseTable, {idColumn}) + principalBaseTable.PrimaryKey = pK_PrincipalBase + Dim pK_PrincipalBaseUc = RelationalModel.GetKey(Me, + "EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase", + {"Id"}) + pK_PrincipalBase.MappedKeys.Add(pK_PrincipalBaseUc) + RelationalModel.GetOrCreateUniqueConstraints(pK_PrincipalBaseUc).Add(pK_PrincipalBase) + principalBaseTable.UniqueConstraints.Add("PK_PrincipalBase", pK_PrincipalBase) + Dim iX_PrincipalBase_PrincipalBaseId As New TableIndex( + "IX_PrincipalBase_PrincipalBaseId", principalBaseTable, {principalBaseIdColumn}, False) + Dim iX_PrincipalBase_PrincipalBaseIdIx = RelationalModel.GetIndex(Me, + "EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase", + {"PrincipalBaseId"}) + iX_PrincipalBase_PrincipalBaseId.MappedIndexes.Add(iX_PrincipalBase_PrincipalBaseIdIx) + RelationalModel.GetOrCreateTableIndexes(iX_PrincipalBase_PrincipalBaseIdIx).Add(iX_PrincipalBase_PrincipalBaseId) + principalBaseTable.Indexes.Add("IX_PrincipalBase_PrincipalBaseId", iX_PrincipalBase_PrincipalBaseId) + relationalModel.Tables.Add(("PrincipalBase", Nothing), principalBaseTable) + Dim principalBaseTableMapping As New TableMapping(principalBase, principalBaseTable, True) With { + .IsSharedTablePrincipal = True + } + principalBaseTable.AddTypeMapping(principalBaseTableMapping, False) + tableMappings.Add(principalBaseTableMapping) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Id"), principalBase.FindProperty("Id"), principalBaseTableMapping) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Discriminator"), principalBase.FindProperty("Discriminator"), principalBaseTableMapping) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Enum1"), principalBase.FindProperty("Enum1"), principalBaseTableMapping) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Enum2"), principalBase.FindProperty("Enum2"), principalBaseTableMapping) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("FlagsEnum1"), principalBase.FindProperty("FlagsEnum1"), principalBaseTableMapping) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("FlagsEnum2"), principalBase.FindProperty("FlagsEnum2"), principalBaseTableMapping) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("PrincipalBaseId"), principalBase.FindProperty("PrincipalBaseId"), principalBaseTableMapping) + + Dim viewMappings As New List(Of ViewMapping)() + principalBase.SetRuntimeAnnotation("Relational:ViewMappings", viewMappings) + Dim principalBaseViewView As New View("PrincipalBaseView", Nothing, relationalModel) + Dim discriminatorViewColumn As New ViewColumn("Discriminator", "nvarchar(55)", principalBaseViewView) + principalBaseViewView.Columns.Add("Discriminator", discriminatorViewColumn) + Dim enum1ViewColumn As New ViewColumn("Enum1", "int", principalBaseViewView) + principalBaseViewView.Columns.Add("Enum1", enum1ViewColumn) + Dim enum2ViewColumn As New ViewColumn("Enum2", "int", principalBaseViewView) With { + .IsNullable = True + } + principalBaseViewView.Columns.Add("Enum2", enum2ViewColumn) + Dim flagsEnum1ViewColumn As New ViewColumn("FlagsEnum1", "int", principalBaseViewView) + principalBaseViewView.Columns.Add("FlagsEnum1", flagsEnum1ViewColumn) + Dim flagsEnum2ViewColumn As New ViewColumn("FlagsEnum2", "int", principalBaseViewView) + principalBaseViewView.Columns.Add("FlagsEnum2", flagsEnum2ViewColumn) + Dim idViewColumn As New ViewColumn("Id", "bigint", principalBaseViewView) + principalBaseViewView.Columns.Add("Id", idViewColumn) + Dim principalBaseIdViewColumn As New ViewColumn("PrincipalBaseId", "bigint", principalBaseViewView) With { + .IsNullable = True + } + principalBaseViewView.Columns.Add("PrincipalBaseId", principalBaseIdViewColumn) + relationalModel.Views.Add(("PrincipalBaseView", Nothing), principalBaseViewView) + Dim principalBaseViewViewMapping As New ViewMapping(principalBase, principalBaseViewView, True) + principalBaseViewView.AddTypeMapping(principalBaseViewViewMapping, False) + viewMappings.Add(principalBaseViewViewMapping) + RelationalModel.CreateViewColumnMapping(principalBaseViewView.FindColumn("Id"), principalBase.FindProperty("Id"), principalBaseViewViewMapping) + RelationalModel.CreateViewColumnMapping(principalBaseViewView.FindColumn("Discriminator"), principalBase.FindProperty("Discriminator"), principalBaseViewViewMapping) + RelationalModel.CreateViewColumnMapping(principalBaseViewView.FindColumn("Enum1"), principalBase.FindProperty("Enum1"), principalBaseViewViewMapping) + RelationalModel.CreateViewColumnMapping(principalBaseViewView.FindColumn("Enum2"), principalBase.FindProperty("Enum2"), principalBaseViewViewMapping) + RelationalModel.CreateViewColumnMapping(principalBaseViewView.FindColumn("FlagsEnum1"), principalBase.FindProperty("FlagsEnum1"), principalBaseViewViewMapping) + RelationalModel.CreateViewColumnMapping(principalBaseViewView.FindColumn("FlagsEnum2"), principalBase.FindProperty("FlagsEnum2"), principalBaseViewViewMapping) + RelationalModel.CreateViewColumnMapping(principalBaseViewView.FindColumn("PrincipalBaseId"), principalBase.FindProperty("PrincipalBaseId"), principalBaseViewViewMapping) + + Dim sqlQueryMappings As New List(Of SqlQueryMapping)() + principalBase.SetRuntimeAnnotation("Relational:SqlQueryMappings", sqlQueryMappings) + Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery As New SqlQuery("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase.MappedSqlQuery", relationalModel, "select * from PrincipalBase") + Dim discriminatorSqlQueryColumn As New SqlQueryColumn("Discriminator", "nvarchar(55)", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.Columns.Add("Discriminator", discriminatorSqlQueryColumn) + Dim enum1SqlQueryColumn As New SqlQueryColumn("Enum1", "int", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.Columns.Add("Enum1", enum1SqlQueryColumn) + Dim enum2SqlQueryColumn As New SqlQueryColumn("Enum2", "int", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery) With { + .IsNullable = True + } + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.Columns.Add("Enum2", enum2SqlQueryColumn) + Dim flagsEnum1SqlQueryColumn As New SqlQueryColumn("FlagsEnum1", "int", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.Columns.Add("FlagsEnum1", flagsEnum1SqlQueryColumn) + Dim flagsEnum2SqlQueryColumn As New SqlQueryColumn("FlagsEnum2", "int", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.Columns.Add("FlagsEnum2", flagsEnum2SqlQueryColumn) + Dim idSqlQueryColumn As New SqlQueryColumn("Id", "bigint", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.Columns.Add("Id", idSqlQueryColumn) + Dim principalBaseIdSqlQueryColumn As New SqlQueryColumn("PrincipalBaseId", "bigint", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery) With { + .IsNullable = True + } + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.Columns.Add("PrincipalBaseId", principalBaseIdSqlQueryColumn) + relationalModel.Queries.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase.MappedSqlQuery", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery) + Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping As New SqlQueryMapping(principalBase, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery, True) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping, False) + sqlQueryMappings.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping.IsDefaultSqlQueryMapping = True + RelationalModel.CreateSqlQueryColumnMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.FindColumn("Id"), principalBase.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping) + RelationalModel.CreateSqlQueryColumnMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.FindColumn("Discriminator"), principalBase.FindProperty("Discriminator"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping) + RelationalModel.CreateSqlQueryColumnMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.FindColumn("Enum1"), principalBase.FindProperty("Enum1"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping) + RelationalModel.CreateSqlQueryColumnMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.FindColumn("Enum2"), principalBase.FindProperty("Enum2"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping) + RelationalModel.CreateSqlQueryColumnMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.FindColumn("FlagsEnum1"), principalBase.FindProperty("FlagsEnum1"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping) + RelationalModel.CreateSqlQueryColumnMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.FindColumn("FlagsEnum2"), principalBase.FindProperty("FlagsEnum2"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping) + RelationalModel.CreateSqlQueryColumnMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.FindColumn("PrincipalBaseId"), principalBase.FindProperty("PrincipalBaseId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping) + + Dim functionMappings As New List(Of FunctionMapping)() + principalBase.SetRuntimeAnnotation("Relational:FunctionMappings", functionMappings) + Dim principalBaseTvf = DirectCast(Me.FindDbFunction("PrincipalBaseTvf"), IRuntimeDbFunction) + Dim principalBaseTvfFunction As New StoreFunction(principalBaseTvf, relationalModel) + Dim discriminatorFunctionColumn As New FunctionColumn("Discriminator", "nvarchar(55)", principalBaseTvfFunction) + principalBaseTvfFunction.Columns.Add("Discriminator", discriminatorFunctionColumn) + Dim enum1FunctionColumn As New FunctionColumn("Enum1", "int", principalBaseTvfFunction) + principalBaseTvfFunction.Columns.Add("Enum1", enum1FunctionColumn) + Dim enum2FunctionColumn As New FunctionColumn("Enum2", "int", principalBaseTvfFunction) With { + .IsNullable = True + } + principalBaseTvfFunction.Columns.Add("Enum2", enum2FunctionColumn) + Dim flagsEnum1FunctionColumn As New FunctionColumn("FlagsEnum1", "int", principalBaseTvfFunction) + principalBaseTvfFunction.Columns.Add("FlagsEnum1", flagsEnum1FunctionColumn) + Dim flagsEnum2FunctionColumn As New FunctionColumn("FlagsEnum2", "int", principalBaseTvfFunction) + principalBaseTvfFunction.Columns.Add("FlagsEnum2", flagsEnum2FunctionColumn) + Dim idFunctionColumn As New FunctionColumn("Id", "bigint", principalBaseTvfFunction) + principalBaseTvfFunction.Columns.Add("Id", idFunctionColumn) + Dim principalBaseIdFunctionColumn As New FunctionColumn("PrincipalBaseId", "bigint", principalBaseTvfFunction) With { + .IsNullable = True + } + principalBaseTvfFunction.Columns.Add("PrincipalBaseId", principalBaseIdFunctionColumn) + relationalModel.Functions.Add( + ("PrincipalBaseTvf", "dbo", New String() {}), + principalBaseTvfFunction) + Dim principalBaseTvfFunctionMapping As New FunctionMapping(principalBase, principalBaseTvfFunction, principalBaseTvf, True) + principalBaseTvfFunction.AddTypeMapping(principalBaseTvfFunctionMapping, False) + functionMappings.Add(principalBaseTvfFunctionMapping) + principalBaseTvfFunctionMapping.IsDefaultFunctionMapping = True + RelationalModel.CreateFunctionColumnMapping(principalBaseTvfFunction.FindColumn("Id"), principalBase.FindProperty("Id"), principalBaseTvfFunctionMapping) + RelationalModel.CreateFunctionColumnMapping(principalBaseTvfFunction.FindColumn("Discriminator"), principalBase.FindProperty("Discriminator"), principalBaseTvfFunctionMapping) + RelationalModel.CreateFunctionColumnMapping(principalBaseTvfFunction.FindColumn("Enum1"), principalBase.FindProperty("Enum1"), principalBaseTvfFunctionMapping) + RelationalModel.CreateFunctionColumnMapping(principalBaseTvfFunction.FindColumn("Enum2"), principalBase.FindProperty("Enum2"), principalBaseTvfFunctionMapping) + RelationalModel.CreateFunctionColumnMapping(principalBaseTvfFunction.FindColumn("FlagsEnum1"), principalBase.FindProperty("FlagsEnum1"), principalBaseTvfFunctionMapping) + RelationalModel.CreateFunctionColumnMapping(principalBaseTvfFunction.FindColumn("FlagsEnum2"), principalBase.FindProperty("FlagsEnum2"), principalBaseTvfFunctionMapping) + RelationalModel.CreateFunctionColumnMapping(principalBaseTvfFunction.FindColumn("PrincipalBaseId"), principalBase.FindProperty("PrincipalBaseId"), principalBaseTvfFunctionMapping) + + Dim deleteSprocMappings As New List(Of StoredProcedureMapping)() + principalBase.SetRuntimeAnnotation("Relational:DeleteStoredProcedureMappings", deleteSprocMappings) + Dim principalBase_DeleteStoreSproc As New StoreStoredProcedure("PrincipalBase_Delete", Nothing, relationalModel) + principalBase_DeleteStoreSproc.ReturnValue = New StoreStoredProcedureReturnValue("", "int", principalBase_DeleteStoreSproc) + Dim id_OriginalParameter As New StoreStoredProcedureParameter("Id_Original", "bigint", 0, principalBase_DeleteStoreSproc, System.Data.ParameterDirection.Input) + principalBase_DeleteStoreSproc.AddParameter(id_OriginalParameter) + principalBase_DeleteStoreSproc.AddStoredProcedure(DirectCast(principalBase.GetDeleteStoredProcedure(), IRuntimeStoredProcedure)) + relationalModel.StoredProcedures.Add(("PrincipalBase_Delete", Nothing), principalBase_DeleteStoreSproc) + Dim principalBase_DeleteDSproc = DirectCast(principalBase.GetDeleteStoredProcedure(), IRuntimeStoredProcedure) + Dim principalBase_DeleteSprocMapping As New StoredProcedureMapping(principalBase, principalBase_DeleteStoreSproc, DirectCast(principalBase.GetDeleteStoredProcedure(), IRuntimeStoredProcedure), principalBaseTableMapping, True) + principalBase_DeleteStoreSproc.AddTypeMapping(principalBase_DeleteSprocMapping, False) + deleteSprocMappings.Add(principalBase_DeleteSprocMapping) + principalBaseTableMapping.DeleteStoredProcedureMapping = principalBase_DeleteSprocMapping + RelationalModel.CreateStoredProcedureParameterMapping(id_OriginalParameter, principalBase_DeleteDSproc.FindParameter("Id_Original"), principalBase.FindProperty("Id"), principalBase_DeleteSprocMapping) + + Dim insertSprocMappings As New List(Of StoredProcedureMapping)() + principalBase.SetRuntimeAnnotation("Relational:InsertStoredProcedureMappings", insertSprocMappings) + Dim principalBase_InsertStoreSproc As New StoreStoredProcedure("PrincipalBase_Insert", Nothing, relationalModel) + Dim principalBaseIdParameter As New StoreStoredProcedureParameter("PrincipalBaseId", "bigint", 0, principalBase_InsertStoreSproc, System.Data.ParameterDirection.Input) With { + .IsNullable = True + } + principalBase_InsertStoreSproc.AddParameter(principalBaseIdParameter) + Dim enum1Parameter As New StoreStoredProcedureParameter("Enum1", "int", 1, principalBase_InsertStoreSproc, System.Data.ParameterDirection.Input) + principalBase_InsertStoreSproc.AddParameter(enum1Parameter) + Dim enum2Parameter As New StoreStoredProcedureParameter("Enum2", "int", 2, principalBase_InsertStoreSproc, System.Data.ParameterDirection.Input) With { + .IsNullable = True + } + principalBase_InsertStoreSproc.AddParameter(enum2Parameter) + Dim flagsEnum1Parameter As New StoreStoredProcedureParameter("FlagsEnum1", "int", 3, principalBase_InsertStoreSproc, System.Data.ParameterDirection.Input) + principalBase_InsertStoreSproc.AddParameter(flagsEnum1Parameter) + Dim flagsEnum2Parameter As New StoreStoredProcedureParameter("FlagsEnum2", "int", 4, principalBase_InsertStoreSproc, System.Data.ParameterDirection.Input) + principalBase_InsertStoreSproc.AddParameter(flagsEnum2Parameter) + Dim discriminatorParameter As New StoreStoredProcedureParameter("Discriminator", "nvarchar(55)", 5, principalBase_InsertStoreSproc, System.Data.ParameterDirection.Input) + principalBase_InsertStoreSproc.AddParameter(discriminatorParameter) + Dim idParameter As New StoreStoredProcedureParameter("Id", "bigint", 6, principalBase_InsertStoreSproc, System.Data.ParameterDirection.Output) + principalBase_InsertStoreSproc.AddParameter(idParameter) + principalBase_InsertStoreSproc.AddStoredProcedure(DirectCast(principalBase.GetInsertStoredProcedure(), IRuntimeStoredProcedure)) + relationalModel.StoredProcedures.Add(("PrincipalBase_Insert", Nothing), principalBase_InsertStoreSproc) + Dim principalBase_InsertISproc = DirectCast(principalBase.GetInsertStoredProcedure(), IRuntimeStoredProcedure) + Dim principalBase_InsertSprocMapping As New StoredProcedureMapping(principalBase, principalBase_InsertStoreSproc, DirectCast(principalBase.GetInsertStoredProcedure(), IRuntimeStoredProcedure), principalBaseTableMapping, True) + principalBase_InsertStoreSproc.AddTypeMapping(principalBase_InsertSprocMapping, False) + insertSprocMappings.Add(principalBase_InsertSprocMapping) + principalBaseTableMapping.InsertStoredProcedureMapping = principalBase_InsertSprocMapping + RelationalModel.CreateStoredProcedureParameterMapping(idParameter, principalBase_InsertISproc.FindParameter("Id"), principalBase.FindProperty("Id"), principalBase_InsertSprocMapping) + RelationalModel.CreateStoredProcedureParameterMapping(discriminatorParameter, principalBase_InsertISproc.FindParameter("Discriminator"), principalBase.FindProperty("Discriminator"), principalBase_InsertSprocMapping) + RelationalModel.CreateStoredProcedureParameterMapping(enum1Parameter, principalBase_InsertISproc.FindParameter("Enum1"), principalBase.FindProperty("Enum1"), principalBase_InsertSprocMapping) + RelationalModel.CreateStoredProcedureParameterMapping(enum2Parameter, principalBase_InsertISproc.FindParameter("Enum2"), principalBase.FindProperty("Enum2"), principalBase_InsertSprocMapping) + RelationalModel.CreateStoredProcedureParameterMapping(flagsEnum1Parameter, principalBase_InsertISproc.FindParameter("FlagsEnum1"), principalBase.FindProperty("FlagsEnum1"), principalBase_InsertSprocMapping) + RelationalModel.CreateStoredProcedureParameterMapping(flagsEnum2Parameter, principalBase_InsertISproc.FindParameter("FlagsEnum2"), principalBase.FindProperty("FlagsEnum2"), principalBase_InsertSprocMapping) + RelationalModel.CreateStoredProcedureParameterMapping(principalBaseIdParameter, principalBase_InsertISproc.FindParameter("PrincipalBaseId"), principalBase.FindProperty("PrincipalBaseId"), principalBase_InsertSprocMapping) + + Dim updateSprocMappings As New List(Of StoredProcedureMapping)() + principalBase.SetRuntimeAnnotation("Relational:UpdateStoredProcedureMappings", updateSprocMappings) + Dim principalBase_UpdateStoreSproc As New StoreStoredProcedure("PrincipalBase_Update", Nothing, relationalModel) + Dim principalBaseIdParameter0 As New StoreStoredProcedureParameter("PrincipalBaseId", "bigint", 0, principalBase_UpdateStoreSproc, System.Data.ParameterDirection.Input) With { + .IsNullable = True + } + principalBase_UpdateStoreSproc.AddParameter(principalBaseIdParameter0) + Dim enum1Parameter0 As New StoreStoredProcedureParameter("Enum1", "int", 1, principalBase_UpdateStoreSproc, System.Data.ParameterDirection.Input) + principalBase_UpdateStoreSproc.AddParameter(enum1Parameter0) + Dim enum2Parameter0 As New StoreStoredProcedureParameter("Enum2", "int", 2, principalBase_UpdateStoreSproc, System.Data.ParameterDirection.Input) With { + .IsNullable = True + } + principalBase_UpdateStoreSproc.AddParameter(enum2Parameter0) + Dim flagsEnum1Parameter0 As New StoreStoredProcedureParameter("FlagsEnum1", "int", 3, principalBase_UpdateStoreSproc, System.Data.ParameterDirection.Input) + principalBase_UpdateStoreSproc.AddParameter(flagsEnum1Parameter0) + Dim flagsEnum2Parameter0 As New StoreStoredProcedureParameter("FlagsEnum2", "int", 4, principalBase_UpdateStoreSproc, System.Data.ParameterDirection.Input) + principalBase_UpdateStoreSproc.AddParameter(flagsEnum2Parameter0) + Dim id_OriginalParameter0 As New StoreStoredProcedureParameter("Id_Original", "bigint", 5, principalBase_UpdateStoreSproc, System.Data.ParameterDirection.Input) + principalBase_UpdateStoreSproc.AddParameter(id_OriginalParameter0) + principalBase_UpdateStoreSproc.AddStoredProcedure(DirectCast(principalBase.GetUpdateStoredProcedure(), IRuntimeStoredProcedure)) + relationalModel.StoredProcedures.Add(("PrincipalBase_Update", Nothing), principalBase_UpdateStoreSproc) + Dim principalBase_UpdateUSproc = DirectCast(principalBase.GetUpdateStoredProcedure(), IRuntimeStoredProcedure) + Dim principalBase_UpdateSprocMapping As New StoredProcedureMapping(principalBase, principalBase_UpdateStoreSproc, DirectCast(principalBase.GetUpdateStoredProcedure(), IRuntimeStoredProcedure), principalBaseTableMapping, True) + principalBase_UpdateStoreSproc.AddTypeMapping(principalBase_UpdateSprocMapping, False) + updateSprocMappings.Add(principalBase_UpdateSprocMapping) + principalBaseTableMapping.UpdateStoredProcedureMapping = principalBase_UpdateSprocMapping + RelationalModel.CreateStoredProcedureParameterMapping(id_OriginalParameter0, principalBase_UpdateUSproc.FindParameter("Id_Original"), principalBase.FindProperty("Id"), principalBase_UpdateSprocMapping) + RelationalModel.CreateStoredProcedureParameterMapping(enum1Parameter0, principalBase_UpdateUSproc.FindParameter("Enum1"), principalBase.FindProperty("Enum1"), principalBase_UpdateSprocMapping) + RelationalModel.CreateStoredProcedureParameterMapping(enum2Parameter0, principalBase_UpdateUSproc.FindParameter("Enum2"), principalBase.FindProperty("Enum2"), principalBase_UpdateSprocMapping) + RelationalModel.CreateStoredProcedureParameterMapping(flagsEnum1Parameter0, principalBase_UpdateUSproc.FindParameter("FlagsEnum1"), principalBase.FindProperty("FlagsEnum1"), principalBase_UpdateSprocMapping) + RelationalModel.CreateStoredProcedureParameterMapping(flagsEnum2Parameter0, principalBase_UpdateUSproc.FindParameter("FlagsEnum2"), principalBase.FindProperty("FlagsEnum2"), principalBase_UpdateSprocMapping) + RelationalModel.CreateStoredProcedureParameterMapping(principalBaseIdParameter0, principalBase_UpdateUSproc.FindParameter("PrincipalBaseId"), principalBase.FindProperty("PrincipalBaseId"), principalBase_UpdateSprocMapping) + + Dim ownedType = principalBase.FindComplexProperty("Owned").ComplexType + + Dim tableMappings0 As New List(Of TableMapping)() + ownedType.SetRuntimeAnnotation("Relational:TableMappings", tableMappings0) + Dim principalBaseTableMapping0 As New TableMapping(ownedType, principalBaseTable, True) + principalBaseTable.AddTypeMapping(principalBaseTableMapping0, False) + tableMappings0.Add(principalBaseTableMapping0) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Deets"), ownedType.FindProperty("Details"), principalBaseTableMapping0) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Owned_Number"), ownedType.FindProperty("Number"), principalBaseTableMapping0) + + Dim principalBase0 = ownedType.FindComplexProperty("Principal").ComplexType + + Dim tableMappings1 As New List(Of TableMapping)() + principalBase0.SetRuntimeAnnotation("Relational:TableMappings", tableMappings1) + Dim principalBaseTableMapping1 As New TableMapping(principalBase0, principalBaseTable, True) + principalBaseTable.AddTypeMapping(principalBaseTableMapping1, False) + tableMappings1.Add(principalBaseTableMapping1) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Owned_Principal_AlternateId"), principalBase0.FindProperty("AlternateId"), principalBaseTableMapping1) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Owned_Principal_Enum1"), principalBase0.FindProperty("Enum1"), principalBaseTableMapping1) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Owned_Principal_Enum2"), principalBase0.FindProperty("Enum2"), principalBaseTableMapping1) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Owned_Principal_FlagsEnum1"), principalBase0.FindProperty("FlagsEnum1"), principalBaseTableMapping1) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Owned_Principal_FlagsEnum2"), principalBase0.FindProperty("FlagsEnum2"), principalBaseTableMapping1) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Owned_Principal_Id"), principalBase0.FindProperty("Id"), principalBaseTableMapping1) + + Dim principalDerived = FindEntityType("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalDerived>") + + Dim defaultTableMappings0 As New List(Of TableMappingBase(Of ColumnMappingBase))() + principalDerived.SetRuntimeAnnotation("Relational:DefaultMappings", defaultTableMappings0) + Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0 As New TableMappingBase(Of ColumnMappingBase)(principalDerived, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase, True) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0, False) + defaultTableMappings0.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), principalDerived.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("Discriminator"), ColumnBase(Of ColumnMappingBase)), principalDerived.FindProperty("Discriminator"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("Enum1"), ColumnBase(Of ColumnMappingBase)), principalDerived.FindProperty("Enum1"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("Enum2"), ColumnBase(Of ColumnMappingBase)), principalDerived.FindProperty("Enum2"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("FlagsEnum1"), ColumnBase(Of ColumnMappingBase)), principalDerived.FindProperty("FlagsEnum1"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("FlagsEnum2"), ColumnBase(Of ColumnMappingBase)), principalDerived.FindProperty("FlagsEnum2"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("PrincipalBaseId"), ColumnBase(Of ColumnMappingBase)), principalDerived.FindProperty("PrincipalBaseId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase0) + + Dim tableMappings2 As New List(Of TableMapping)() + principalDerived.SetRuntimeAnnotation("Relational:TableMappings", tableMappings2) + Dim principalBaseTableMapping2 As New TableMapping(principalDerived, principalBaseTable, True) With { + .IsSharedTablePrincipal = False + } + principalBaseTable.AddTypeMapping(principalBaseTableMapping2, False) + tableMappings2.Add(principalBaseTableMapping2) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Id"), principalDerived.FindProperty("Id"), principalBaseTableMapping2) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Discriminator"), principalDerived.FindProperty("Discriminator"), principalBaseTableMapping2) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Enum1"), principalDerived.FindProperty("Enum1"), principalBaseTableMapping2) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Enum2"), principalDerived.FindProperty("Enum2"), principalBaseTableMapping2) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("FlagsEnum1"), principalDerived.FindProperty("FlagsEnum1"), principalBaseTableMapping2) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("FlagsEnum2"), principalDerived.FindProperty("FlagsEnum2"), principalBaseTableMapping2) + RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("PrincipalBaseId"), principalDerived.FindProperty("PrincipalBaseId"), principalBaseTableMapping2) + + Dim sqlQueryMappings0 As New List(Of SqlQueryMapping)() + principalDerived.SetRuntimeAnnotation("Relational:SqlQueryMappings", sqlQueryMappings0) + Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping0 As New SqlQueryMapping(principalDerived, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery, True) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping0, False) + sqlQueryMappings0.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping0) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping0.IsDefaultSqlQueryMapping = True + RelationalModel.CreateSqlQueryColumnMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.FindColumn("Id"), principalDerived.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping0) + RelationalModel.CreateSqlQueryColumnMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.FindColumn("Discriminator"), principalDerived.FindProperty("Discriminator"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping0) + RelationalModel.CreateSqlQueryColumnMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.FindColumn("Enum1"), principalDerived.FindProperty("Enum1"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping0) + RelationalModel.CreateSqlQueryColumnMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.FindColumn("Enum2"), principalDerived.FindProperty("Enum2"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping0) + RelationalModel.CreateSqlQueryColumnMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.FindColumn("FlagsEnum1"), principalDerived.FindProperty("FlagsEnum1"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping0) + RelationalModel.CreateSqlQueryColumnMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.FindColumn("FlagsEnum2"), principalDerived.FindProperty("FlagsEnum2"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping0) + RelationalModel.CreateSqlQueryColumnMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQuery.FindColumn("PrincipalBaseId"), principalDerived.FindProperty("PrincipalBaseId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappedSqlQuerySqlQueryMapping0) + + Dim deleteSprocMappings0 As New List(Of StoredProcedureMapping)() + principalDerived.SetRuntimeAnnotation("Relational:DeleteStoredProcedureMappings", deleteSprocMappings0) + Dim principalBase_DeleteDSproc0 = DirectCast(principalBase.GetDeleteStoredProcedure(), IRuntimeStoredProcedure) + Dim principalBase_DeleteSprocMapping0 As New StoredProcedureMapping(principalDerived, principalBase_DeleteStoreSproc, DirectCast(principalBase.GetDeleteStoredProcedure(), IRuntimeStoredProcedure), principalBaseTableMapping2, True) + principalBase_DeleteStoreSproc.AddTypeMapping(principalBase_DeleteSprocMapping0, False) + deleteSprocMappings0.Add(principalBase_DeleteSprocMapping0) + principalBaseTableMapping2.DeleteStoredProcedureMapping = principalBase_DeleteSprocMapping0 + RelationalModel.CreateStoredProcedureParameterMapping(id_OriginalParameter, principalBase_DeleteDSproc0.FindParameter("Id_Original"), principalDerived.FindProperty("Id"), principalBase_DeleteSprocMapping0) + + Dim insertSprocMappings0 As New List(Of StoredProcedureMapping)() + principalDerived.SetRuntimeAnnotation("Relational:InsertStoredProcedureMappings", insertSprocMappings0) + Dim principalBase_InsertISproc0 = DirectCast(principalBase.GetInsertStoredProcedure(), IRuntimeStoredProcedure) + Dim principalBase_InsertSprocMapping0 As New StoredProcedureMapping(principalDerived, principalBase_InsertStoreSproc, DirectCast(principalBase.GetInsertStoredProcedure(), IRuntimeStoredProcedure), principalBaseTableMapping2, True) + principalBase_InsertStoreSproc.AddTypeMapping(principalBase_InsertSprocMapping0, False) + insertSprocMappings0.Add(principalBase_InsertSprocMapping0) + principalBaseTableMapping2.InsertStoredProcedureMapping = principalBase_InsertSprocMapping0 + RelationalModel.CreateStoredProcedureParameterMapping(idParameter, principalBase_InsertISproc0.FindParameter("Id"), principalDerived.FindProperty("Id"), principalBase_InsertSprocMapping0) + RelationalModel.CreateStoredProcedureParameterMapping(discriminatorParameter, principalBase_InsertISproc0.FindParameter("Discriminator"), principalDerived.FindProperty("Discriminator"), principalBase_InsertSprocMapping0) + RelationalModel.CreateStoredProcedureParameterMapping(enum1Parameter, principalBase_InsertISproc0.FindParameter("Enum1"), principalDerived.FindProperty("Enum1"), principalBase_InsertSprocMapping0) + RelationalModel.CreateStoredProcedureParameterMapping(enum2Parameter, principalBase_InsertISproc0.FindParameter("Enum2"), principalDerived.FindProperty("Enum2"), principalBase_InsertSprocMapping0) + RelationalModel.CreateStoredProcedureParameterMapping(flagsEnum1Parameter, principalBase_InsertISproc0.FindParameter("FlagsEnum1"), principalDerived.FindProperty("FlagsEnum1"), principalBase_InsertSprocMapping0) + RelationalModel.CreateStoredProcedureParameterMapping(flagsEnum2Parameter, principalBase_InsertISproc0.FindParameter("FlagsEnum2"), principalDerived.FindProperty("FlagsEnum2"), principalBase_InsertSprocMapping0) + RelationalModel.CreateStoredProcedureParameterMapping(principalBaseIdParameter, principalBase_InsertISproc0.FindParameter("PrincipalBaseId"), principalDerived.FindProperty("PrincipalBaseId"), principalBase_InsertSprocMapping0) + + Dim updateSprocMappings0 As New List(Of StoredProcedureMapping)() + principalDerived.SetRuntimeAnnotation("Relational:UpdateStoredProcedureMappings", updateSprocMappings0) + Dim principalBase_UpdateUSproc0 = DirectCast(principalBase.GetUpdateStoredProcedure(), IRuntimeStoredProcedure) + Dim principalBase_UpdateSprocMapping0 As New StoredProcedureMapping(principalDerived, principalBase_UpdateStoreSproc, DirectCast(principalBase.GetUpdateStoredProcedure(), IRuntimeStoredProcedure), principalBaseTableMapping2, True) + principalBase_UpdateStoreSproc.AddTypeMapping(principalBase_UpdateSprocMapping0, False) + updateSprocMappings0.Add(principalBase_UpdateSprocMapping0) + principalBaseTableMapping2.UpdateStoredProcedureMapping = principalBase_UpdateSprocMapping0 + RelationalModel.CreateStoredProcedureParameterMapping(id_OriginalParameter0, principalBase_UpdateUSproc0.FindParameter("Id_Original"), principalDerived.FindProperty("Id"), principalBase_UpdateSprocMapping0) + RelationalModel.CreateStoredProcedureParameterMapping(enum1Parameter0, principalBase_UpdateUSproc0.FindParameter("Enum1"), principalDerived.FindProperty("Enum1"), principalBase_UpdateSprocMapping0) + RelationalModel.CreateStoredProcedureParameterMapping(enum2Parameter0, principalBase_UpdateUSproc0.FindParameter("Enum2"), principalDerived.FindProperty("Enum2"), principalBase_UpdateSprocMapping0) + RelationalModel.CreateStoredProcedureParameterMapping(flagsEnum1Parameter0, principalBase_UpdateUSproc0.FindParameter("FlagsEnum1"), principalDerived.FindProperty("FlagsEnum1"), principalBase_UpdateSprocMapping0) + RelationalModel.CreateStoredProcedureParameterMapping(flagsEnum2Parameter0, principalBase_UpdateUSproc0.FindParameter("FlagsEnum2"), principalDerived.FindProperty("FlagsEnum2"), principalBase_UpdateSprocMapping0) + RelationalModel.CreateStoredProcedureParameterMapping(principalBaseIdParameter0, principalBase_UpdateUSproc0.FindParameter("PrincipalBaseId"), principalDerived.FindProperty("PrincipalBaseId"), principalBase_UpdateSprocMapping0) + Dim fK_PrincipalBase_PrincipalBase_PrincipalBaseId As New ForeignKeyConstraint( + "FK_PrincipalBase_PrincipalBase_PrincipalBaseId", principalBaseTable, principalBaseTable, + {principalBaseIdColumn}, + principalBaseTable.FindUniqueConstraint("PK_PrincipalBase"), ReferentialAction.NoAction) + Dim fK_PrincipalBase_PrincipalBase_PrincipalBaseIdFk = RelationalModel.GetForeignKey(Me, + "EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase", + {"PrincipalBaseId"}, + "EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase", + {"Id"}) + fK_PrincipalBase_PrincipalBase_PrincipalBaseId.MappedForeignKeys.Add(fK_PrincipalBase_PrincipalBase_PrincipalBaseIdFk) + RelationalModel.GetOrCreateForeignKeyConstraints(fK_PrincipalBase_PrincipalBase_PrincipalBaseIdFk).Add(fK_PrincipalBase_PrincipalBase_PrincipalBaseId) + principalBaseTable.ForeignKeyConstraints.Add(fK_PrincipalBase_PrincipalBase_PrincipalBaseId) + principalBaseTable.ReferencingForeignKeyConstraints.Add(fK_PrincipalBase_PrincipalBase_PrincipalBaseId) + Return relationalModel.MakeReadOnly() + End Function + End Class +End Namespace +]]>.Value + + Dim PrincipalBaseEntityType = +Imports System +Imports System.Collections.Generic +Imports System.Reflection +Imports EntityFrameworkCore.VisualBasic.Scaffolding.Internal +Imports Microsoft.EntityFrameworkCore +Imports Microsoft.EntityFrameworkCore.Metadata +Imports Microsoft.EntityFrameworkCore.ValueGeneration + +Namespace TestNamespace + Friend Partial Class PrincipalBaseEntityType + + Public Shared Function Create(model As RuntimeModel, Optional baseEntityType As RuntimeEntityType = Nothing) As RuntimeEntityType + Dim entityType = model.AddEntityType( + "EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase", + GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase), + baseEntityType, + discriminatorProperty:="Discriminator", + discriminatorValue:="PrincipalBase") + + Dim id = entityType.AddProperty( + "Id", + GetType(Long?), + propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetProperty("Id", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetField("_Id", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + valueGenerated:=ValueGenerated.OnAdd, + afterSaveBehavior:=PropertySaveBehavior.Throw) + id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn) + + Dim discriminator = entityType.AddProperty( + "Discriminator", + GetType(String), + afterSaveBehavior:=PropertySaveBehavior.Throw, + maxLength:=55, + valueGeneratorFactory:=AddressOf New DiscriminatorValueGeneratorFactory().Create) + discriminator.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) + + Dim enum1 = entityType.AddProperty( + "Enum1", + GetType(VisualBasicRuntimeModelCodeGeneratorTest.AnEnum), + propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetProperty("Enum1", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetField("_Enum1", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + sentinel:=CType(0, VisualBasicRuntimeModelCodeGeneratorTest.AnEnum)) + enum1.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) + + Dim enum2 = entityType.AddProperty( + "Enum2", + GetType(VisualBasicRuntimeModelCodeGeneratorTest.AnEnum?), + propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetProperty("Enum2", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetField("_Enum2", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + nullable:=True) + enum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) + + Dim flagsEnum1 = entityType.AddProperty( + "FlagsEnum1", + GetType(VisualBasicRuntimeModelCodeGeneratorTest.AFlagsEnum), + propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetProperty("FlagsEnum1", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetField("_FlagsEnum1", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + sentinel:=CType(0, VisualBasicRuntimeModelCodeGeneratorTest.AFlagsEnum)) + flagsEnum1.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) + + Dim flagsEnum2 = entityType.AddProperty( + "FlagsEnum2", + GetType(VisualBasicRuntimeModelCodeGeneratorTest.AFlagsEnum), + propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetProperty("FlagsEnum2", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetField("_FlagsEnum2", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + sentinel:=CType(0, VisualBasicRuntimeModelCodeGeneratorTest.AFlagsEnum)) + flagsEnum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) + + Dim principalBaseId = entityType.AddProperty( + "PrincipalBaseId", + GetType(Long?), + nullable:=True) + principalBaseId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) + + OwnedComplexProperty.Create(entityType) + Dim key = entityType.AddKey( + {id}) + entityType.SetPrimaryKey(key) + + Dim index = entityType.AddIndex( + {principalBaseId}) + + Return entityType + End Function + + Private Class OwnedComplexProperty + Public Shared Function Create(declaringType As RuntimeEntityType) As RuntimeComplexProperty + Dim complexProperty = declaringType.AddComplexProperty("Owned", + GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType), + "EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase.Owned#OwnedType", + GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType), + propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetProperty("Owned", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetField("_ownedField", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + propertyAccessMode:=PropertyAccessMode.Field, + changeTrackingStrategy:=ChangeTrackingStrategy.ChangingAndChangedNotificationsWithOriginalValues) + + Dim complexType = complexProperty.ComplexType + Dim details = complexType.AddProperty( + "Details", + GetType(String), + propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetProperty("Details", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetField("_details", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + propertyAccessMode:=PropertyAccessMode.FieldDuringConstruction, + nullable:=True, + concurrencyToken:=True, + valueGenerated:=ValueGenerated.OnAddOrUpdate, + beforeSaveBehavior:=PropertySaveBehavior.Ignore, + afterSaveBehavior:=PropertySaveBehavior.Ignore, + maxLength:=64, + unicode:=False, + precision:=3, + scale:=2, + sentinel:="") + details.AddAnnotation("foo", "bar") + details.AddAnnotation("Relational:ColumnName", "Deets") + details.AddAnnotation("Relational:ColumnType", "varchar") + details.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) + + Dim number = complexType.AddProperty( + "Number", + GetType(Integer), + propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetProperty("Number", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetField("_Number", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + sentinel:=0) + number.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) + + PrincipalComplexProperty.Create(complexType) + complexType.AddAnnotation("go", "brr") + complexType.AddAnnotation("Relational:FunctionName", "PrincipalBaseTvf") + complexType.AddAnnotation("Relational:Schema", Nothing) + complexType.AddAnnotation("Relational:SqlQuery", "select * from PrincipalBase") + complexType.AddAnnotation("Relational:TableName", "PrincipalBase") + complexType.AddAnnotation("Relational:ViewName", "PrincipalBaseView") + complexType.AddAnnotation("Relational:ViewSchema", Nothing) + complexProperty.AddAnnotation("goo", "ber") + Return complexProperty + End Function + + Private Class PrincipalComplexProperty + Public Shared Function Create(declaringType As RuntimeComplexType) As RuntimeComplexProperty + Dim complexProperty = declaringType.AddComplexProperty("Principal", + GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase), + "EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase.Owned#OwnedType.Principal#PrincipalBase", + GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase), + propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetProperty("Principal", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.OwnedType).GetField("_Principal", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + nullable:=True) + + Dim complexType = complexProperty.ComplexType + Dim alternateId = complexType.AddProperty( + "AlternateId", + GetType(Guid), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetField("AlternateId", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + sentinel:=New Guid("00000000-0000-0000-0000-000000000000")) + alternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) + + Dim enum1 = complexType.AddProperty( + "Enum1", + GetType(VisualBasicRuntimeModelCodeGeneratorTest.AnEnum), + propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetProperty("Enum1", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetField("_Enum1", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + sentinel:=CType(0, VisualBasicRuntimeModelCodeGeneratorTest.AnEnum)) + enum1.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) + + Dim enum2 = complexType.AddProperty( + "Enum2", + GetType(VisualBasicRuntimeModelCodeGeneratorTest.AnEnum?), + propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetProperty("Enum2", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetField("_Enum2", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + nullable:=True) + enum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) + + Dim flagsEnum1 = complexType.AddProperty( + "FlagsEnum1", + GetType(VisualBasicRuntimeModelCodeGeneratorTest.AFlagsEnum), + propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetProperty("FlagsEnum1", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetField("_FlagsEnum1", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + sentinel:=CType(0, VisualBasicRuntimeModelCodeGeneratorTest.AFlagsEnum)) + flagsEnum1.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) + + Dim flagsEnum2 = complexType.AddProperty( + "FlagsEnum2", + GetType(VisualBasicRuntimeModelCodeGeneratorTest.AFlagsEnum), + propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetProperty("FlagsEnum2", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetField("_FlagsEnum2", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + sentinel:=CType(0, VisualBasicRuntimeModelCodeGeneratorTest.AFlagsEnum)) + flagsEnum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) + + Dim id = complexType.AddProperty( + "Id", + GetType(Long?), + propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetProperty("Id", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetField("_Id", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + nullable:=True) + id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None) + + complexType.AddAnnotation("Relational:FunctionName", "PrincipalBaseTvf") + complexType.AddAnnotation("Relational:Schema", Nothing) + complexType.AddAnnotation("Relational:SqlQuery", "select * from PrincipalBase") + complexType.AddAnnotation("Relational:TableName", "PrincipalBase") + complexType.AddAnnotation("Relational:ViewName", "PrincipalBaseView") + complexType.AddAnnotation("Relational:ViewSchema", Nothing) + Return complexProperty + End Function + End Class + End Class + + Public Shared Function CreateForeignKey1(declaringEntityType As RuntimeEntityType, principalEntityType As RuntimeEntityType) As RuntimeForeignKey + Dim runtimeForeignKey = declaringEntityType.AddForeignKey({declaringEntityType.FindProperty("PrincipalBaseId")}, + principalEntityType.FindKey({principalEntityType.FindProperty("Id")}), + principalEntityType) + + Dim deriveds = principalEntityType.AddNavigation("Deriveds", + runtimeForeignKey, + onDependent:=False, + GetType(ICollection(Of VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase)), + propertyInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetProperty("Deriveds", BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly), + fieldInfo:=GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalBase).GetField("_Deriveds", BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly)) + + Return runtimeForeignKey + End Function + + Public Shared Sub CreateAnnotations(entityType As RuntimeEntityType) + Dim insertSproc As New RuntimeStoredProcedure( + entityType, + "PrincipalBase_Insert", + Nothing, + False) + + Dim principalBaseId = insertSproc.AddParameter( + "PrincipalBaseId", System.Data.ParameterDirection.Input, False, "PrincipalBaseId", False) + Dim enum1 = insertSproc.AddParameter( + "Enum1", System.Data.ParameterDirection.Input, False, "Enum1", False) + Dim enum2 = insertSproc.AddParameter( + "Enum2", System.Data.ParameterDirection.Input, False, "Enum2", False) + Dim flagsEnum1 = insertSproc.AddParameter( + "FlagsEnum1", System.Data.ParameterDirection.Input, False, "FlagsEnum1", False) + Dim flagsEnum2 = insertSproc.AddParameter( + "FlagsEnum2", System.Data.ParameterDirection.Input, False, "FlagsEnum2", False) + Dim discriminator = insertSproc.AddParameter( + "Discriminator", System.Data.ParameterDirection.Input, False, "Discriminator", False) + Dim id = insertSproc.AddParameter( + "Id", System.Data.ParameterDirection.Output, False, "Id", False) + entityType.AddAnnotation("Relational:InsertStoredProcedure", insertSproc) + + Dim deleteSproc As New RuntimeStoredProcedure( + entityType, + "PrincipalBase_Delete", + Nothing, + True) + + Dim id0 = deleteSproc.AddParameter( + "Id_Original", System.Data.ParameterDirection.Input, False, "Id", True) + entityType.AddAnnotation("Relational:DeleteStoredProcedure", deleteSproc) + + Dim updateSproc As New RuntimeStoredProcedure( + entityType, + "PrincipalBase_Update", + Nothing, + False) + + Dim principalBaseId0 = updateSproc.AddParameter( + "PrincipalBaseId", System.Data.ParameterDirection.Input, False, "PrincipalBaseId", False) + Dim enum10 = updateSproc.AddParameter( + "Enum1", System.Data.ParameterDirection.Input, False, "Enum1", False) + Dim enum20 = updateSproc.AddParameter( + "Enum2", System.Data.ParameterDirection.Input, False, "Enum2", False) + Dim flagsEnum10 = updateSproc.AddParameter( + "FlagsEnum1", System.Data.ParameterDirection.Input, False, "FlagsEnum1", False) + Dim flagsEnum20 = updateSproc.AddParameter( + "FlagsEnum2", System.Data.ParameterDirection.Input, False, "FlagsEnum2", False) + Dim id1 = updateSproc.AddParameter( + "Id_Original", System.Data.ParameterDirection.Input, False, "Id", True) + entityType.AddAnnotation("Relational:UpdateStoredProcedure", updateSproc) + + entityType.AddAnnotation("Relational:FunctionName", "PrincipalBaseTvf") + entityType.AddAnnotation("Relational:MappingStrategy", "TPH") + entityType.AddAnnotation("Relational:Schema", Nothing) + entityType.AddAnnotation("Relational:SqlQuery", "select * from PrincipalBase") + entityType.AddAnnotation("Relational:TableName", "PrincipalBase") + entityType.AddAnnotation("Relational:ViewDefinitionSql", Nothing) + entityType.AddAnnotation("Relational:ViewName", "PrincipalBaseView") + entityType.AddAnnotation("Relational:ViewSchema", Nothing) + + Customize(entityType) + End Sub + + Shared Partial Private Sub Customize(entityType As RuntimeEntityType) + End Sub + End Class +End Namespace +]]>.Value + + Dim PrincipalDerivedEntityType = +Imports System +Imports System.Reflection +Imports EntityFrameworkCore.VisualBasic.Scaffolding.Internal +Imports Microsoft.EntityFrameworkCore.Metadata + +Namespace TestNamespace + Friend Partial Class PrincipalDerivedEntityType + + Public Shared Function Create(model As RuntimeModel, Optional baseEntityType As RuntimeEntityType = Nothing) As RuntimeEntityType + Dim entityType = model.AddEntityType( + "EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalDerived>", + GetType(VisualBasicRuntimeModelCodeGeneratorTest.PrincipalDerived(Of VisualBasicRuntimeModelCodeGeneratorTest.DependentBase(Of Byte?))), + baseEntityType, + discriminatorProperty:="Discriminator", + discriminatorValue:="PrincipalDerived>") + + Return entityType + End Function + + Public Shared Sub CreateAnnotations(entityType As RuntimeEntityType) + entityType.AddAnnotation("Relational:FunctionName", Nothing) + entityType.AddAnnotation("Relational:Schema", Nothing) + entityType.AddAnnotation("Relational:SqlQuery", "select * from PrincipalBase") + entityType.AddAnnotation("Relational:TableName", "PrincipalBase") + entityType.AddAnnotation("Relational:ViewName", Nothing) + entityType.AddAnnotation("Relational:ViewSchema", Nothing) + + Customize(entityType) + End Sub + + Shared Partial Private Sub Customize(entityType As RuntimeEntityType) + End Sub + End Class +End Namespace +]]>.Value + + Test( + New ComplexTypesContext(), + CreateCompiledModelCodeGenerationOptions(), + Sub(code) + Assert. + Collection(code, + Sub(c) AssertFileContents("ComplexTypesContextModel.vb", ComplexTypesContextModel, c), + Sub(c) AssertFileContents("ComplexTypesContextModelBuilder.vb", ComplexTypesContextModelBuilder, c), + Sub(c) AssertFileContents("PrincipalBaseEntityType.vb", PrincipalBaseEntityType, c), + Sub(c) AssertFileContents("PrincipalDerivedEntityType.vb", PrincipalDerivedEntityType, c)) + End Sub, + Sub(Model) + Dim principalBaseET = Model.FindEntityType(GetType(PrincipalBase)) + + Dim complexProperty = principalBaseET.GetComplexProperties().Single() + Assert.Equal( + {"goo"}, + complexProperty.GetAnnotations().Select(Function(a) a.Name)) + Assert.Equal(NameOf(PrincipalBase.Owned), complexProperty.Name) + Assert.False(complexProperty.IsCollection) + Assert.False(complexProperty.IsNullable) + Assert.Equal(GetType(OwnedType), complexProperty.ClrType) + Assert.Equal("_ownedField", complexProperty.FieldInfo.Name) + Assert.Equal(NameOf(PrincipalBase.Owned), complexProperty.PropertyInfo.Name) + Assert.Equal(principalBaseET, complexProperty.DeclaringType) + Assert.Equal(PropertyAccessMode.Field, complexProperty.GetPropertyAccessMode()) + Assert.Equal("ber", complexProperty("goo")) + + Dim complexType = complexProperty.ComplexType + Assert.Equal( + { + RelationalAnnotationNames.FunctionName, + RelationalAnnotationNames.Schema, + RelationalAnnotationNames.SqlQuery, + RelationalAnnotationNames.TableName, + RelationalAnnotationNames.ViewName, + RelationalAnnotationNames.ViewSchema, + "go" + }, + complexType.GetAnnotations().Select(Function(a) a.Name)) + Assert.Equal(GetType(PrincipalBase).FullName & ".Owned#OwnedType", complexType.Name) + Assert.Equal(GetType(OwnedType), complexType.ClrType) + Assert.True(complexType.HasSharedClrType) + Assert.False(complexType.IsPropertyBag) + Assert.IsType(Of ConstructorBinding)(complexType.ConstructorBinding) + Assert.Null(complexType.FindIndexerPropertyInfo()) + Assert.Equal( + ChangeTrackingStrategy.ChangingAndChangedNotificationsWithOriginalValues, + complexType.GetChangeTrackingStrategy()) + Assert.Equal( + CoreStrings.RuntimeModelMissingData, + Assert.Throws(Of InvalidOperationException)(Sub() complexType.GetPropertyAccessMode()).Message) + Assert.Equal("brr", complexType("go")) + + Dim detailsProperty = complexType.FindProperty(NameOf(OwnedType.Details)) + Assert.Equal( + { + CoreAnnotationNames.MaxLength, + CoreAnnotationNames.Precision, + RelationalAnnotationNames.ColumnName, + RelationalAnnotationNames.ColumnType, + CoreAnnotationNames.Scale, + SqlServerAnnotationNames.ValueGenerationStrategy, + CoreAnnotationNames.Unicode, + "foo" + }, + detailsProperty.GetAnnotations().Select(Function(a) a.Name)) + Assert.Equal(GetType(String), detailsProperty.ClrType) + Assert.Equal(GetType(String), detailsProperty.PropertyInfo.PropertyType) + Assert.Equal(GetType(String), detailsProperty.FieldInfo.FieldType) + Assert.Equal("_details", detailsProperty.FieldInfo.Name) + Assert.True(detailsProperty.IsNullable) + Assert.Equal(ValueGenerated.OnAddOrUpdate, detailsProperty.ValueGenerated) + Assert.Equal(PropertySaveBehavior.Ignore, detailsProperty.GetAfterSaveBehavior()) + Assert.Equal(PropertySaveBehavior.Ignore, detailsProperty.GetBeforeSaveBehavior()) + Assert.Equal("Deets", detailsProperty.GetColumnName()) + Assert.Equal("varchar(64)", detailsProperty.GetColumnType()) + Assert.False(detailsProperty.IsUnicode()) + Assert.True(detailsProperty.IsConcurrencyToken) + Assert.Equal(64, detailsProperty.GetMaxLength()) + Assert.Null(detailsProperty.IsFixedLength()) + Assert.Equal(3, detailsProperty.GetPrecision()) + Assert.Equal(2, detailsProperty.GetScale()) + Assert.Equal("", detailsProperty.Sentinel) + Assert.Equal(PropertyAccessMode.FieldDuringConstruction, detailsProperty.GetPropertyAccessMode()) + Assert.Null(detailsProperty.GetValueConverter()) + Assert.NotNull(detailsProperty.GetValueComparer()) + Assert.NotNull(detailsProperty.GetKeyValueComparer()) + Assert.Equal(SqlServerValueGenerationStrategy.None, detailsProperty.GetValueGenerationStrategy()) + Assert.Null(detailsProperty.GetDefaultValueSql()) + Assert.Equal( + CoreStrings.RuntimeModelMissingData, + Assert.Throws(Of InvalidOperationException)(Sub() detailsProperty.GetIdentitySeed()).Message) + Assert.Equal( + CoreStrings.RuntimeModelMissingData, + Assert.Throws(Of InvalidOperationException)(Sub() detailsProperty.GetIdentityIncrement()).Message) + Assert.Equal( + CoreStrings.RuntimeModelMissingData, + Assert.Throws(Of InvalidOperationException)(Sub() detailsProperty.IsSparse()).Message) + Assert.Equal( + CoreStrings.RuntimeModelMissingData, + Assert.Throws(Of InvalidOperationException)(Sub() detailsProperty.GetCollation()).Message) + Assert.Equal( + CoreStrings.RuntimeModelMissingData, + Assert.Throws(Of InvalidOperationException)(Sub() detailsProperty.GetComment()).Message) + Assert.Equal( + CoreStrings.RuntimeModelMissingData, + Assert.Throws(Of InvalidOperationException)(Sub() detailsProperty.GetColumnOrder()).Message) + + Dim nestedComplexType = complexType.FindComplexProperty(NameOf(OwnedType.Principal)).ComplexType + + Assert.Equal(6, nestedComplexType.GetProperties().Count()) + + Dim principalTable = StoreObjectIdentifier.Create(complexType, StoreObjectType.Table).Value + + Assert.Equal("Deets", detailsProperty.GetColumnName(principalTable)) + + Dim dbFunction = Model.FindDbFunction("PrincipalBaseTvf") + Assert.Equal("dbo", dbFunction.Schema) + Assert.False(dbFunction.IsNullable) + Assert.False(dbFunction.IsScalar) + Assert.False(dbFunction.IsBuiltIn) + Assert.False(dbFunction.IsAggregate) + Assert.Null(dbFunction.Translation) + Assert.Null(dbFunction.TypeMapping) + Assert.Equal(GetType(IQueryable(Of PrincipalBase)), dbFunction.ReturnType) + Assert.Null(dbFunction.MethodInfo) + Assert.Empty(dbFunction.GetAnnotations()) + Assert.Empty(dbFunction.GetRuntimeAnnotations()) + Assert.Equal("PrincipalBaseTvf", dbFunction.StoreFunction.Name) + Assert.False(dbFunction.StoreFunction.IsShared) + Assert.NotNull(dbFunction.ToString()) + Assert.Empty(dbFunction.Parameters) + + Dim principalBaseFunctionMapping = principalBaseET.GetFunctionMappings().Single(Function(m) m.IsDefaultFunctionMapping) + Assert.True(principalBaseFunctionMapping.IncludesDerivedTypes) + Assert.Null(principalBaseFunctionMapping.IsSharedTablePrincipal) + Assert.Null(principalBaseFunctionMapping.IsSplitEntityTypePrincipal) + Assert.Same(dbFunction, principalBaseFunctionMapping.DbFunction) + + Dim principalDerived = Model.FindEntityType(GetType(PrincipalDerived(Of DependentBase(Of Byte?)))) + Assert.Equal(principalBaseET, principalDerived.BaseType) + + Assert.Equal( + {principalBaseET, principalDerived}, + Model.GetEntityTypes()) + End Sub, + Nothing) + End Sub + + Public Class BigContextWithJson + Inherits BigContext + + Public Sub New() + MyBase.New(jsonColumns:=True) + End Sub + End Class + + Public Class BigContext + Inherits SqlServerContextBase + + Private ReadOnly _jsonColumns As Boolean + + Public Sub New(Optional jsonColumns As Boolean = False) + _jsonColumns = jsonColumns + End Sub + + Protected Overrides Sub OnModelCreating(modelBuilder As ModelBuilder) + MyBase.OnModelCreating(modelBuilder) + + modelBuilder. + UseCollation("Latin1_General_CS_AS"). + UseIdentityColumns(3, 2) + + modelBuilder.Entity(Of PrincipalBase)( + Sub(eb) + If Not _jsonColumns Then + eb.Property(Function(e) e.Id). + UseIdentityColumn(2, 3). + Metadata. + SetColumnName("DerivedId", StoreObjectIdentifier. + Table("PrincipalDerived")) + End If + + eb.Property(Function(e) e.FlagsEnum2). + HasSentinel(AFlagsEnum.C Or AFlagsEnum.B) + + eb.Property(Function(e) e.AlternateId). + UsePropertyAccessMode(PropertyAccessMode.FieldDuringConstruction) + + eb.Property(Of Point)("Point"). + HasColumnType("geometry"). + HasDefaultValue(NtsGeometryServices.Instance.CreateGeometryFactory(srid:=0). + CreatePoint(New CoordinateZM(0, 0, 0, 0))). + HasConversion(Of CastingConverter(Of Point, Point), CustomValueComparer(Of Point), CustomValueComparer(Of Point))() + + eb.HasIndex(Function(e) New With {e.AlternateId, e.Id}) + + eb.HasKey(Function(e) New With {e.Id, e.AlternateId}).HasName("PK"). + IsClustered() + + eb.HasAlternateKey(Function(e) e.Id) + + eb.Property(Function(e) e.AlternateId).Metadata.SetJsonValueReaderWriterType( + If(_jsonColumns, + GetType(MyJsonGuidReaderWriter), + GetType(JsonGuidReaderWriter))) + + eb.OwnsOne( + Function(e) e.Owned, + Sub(ob) + ob.HasChangeTrackingStrategy(ChangeTrackingStrategy.ChangingAndChangedNotificationsWithOriginalValues) + ob.UsePropertyAccessMode(PropertyAccessMode.Field) + ob.Property(Function(e) e.Details). + IsSparse(). + UseCollation("Latin1_General_CI_AI") + + If _jsonColumns Then + ob.ToJson() + Else + ob.ToTable("PrincipalBase", "mySchema", + Sub(t) t.Property("PrincipalBaseId").UseIdentityColumn(2, 3)) + + ob.SplitToTable("Details", Sub(s) s.Property(Function(e) e.Details)) + + ob.HasData(New With { + .Number = 10, + .PrincipalBaseId = 1L, + .PrincipalBaseAlternateId = New Guid() + }) + End If + End Sub) + + eb.Navigation(Function(e) e.Owned). + IsRequired(). + HasField("_ownedField"). + UsePropertyAccessMode(PropertyAccessMode.Field) + + If Not _jsonColumns Then + eb.HasData(New PrincipalBase With {.Id = 1, .AlternateId = New Guid()}) + + eb.ToTable("PrincipalBase", "mySchema") + End If + End Sub) + + modelBuilder.Entity(Of PrincipalDerived(Of DependentBase(Of Byte?)))( + Sub(eb) + eb.HasOne(Function(e) e.Dependent). + WithOne(Function(e) e.Principal). + HasForeignKey(Of DependentBase(Of Byte?))(). + OnDelete(DeleteBehavior.ClientNoAction) + + eb.Navigation(Function(e) e.Dependent).AutoInclude().EnableLazyLoading(False) + + eb.OwnsMany(GetType(OwnedType).FullName, "ManyOwned", + Sub(ob) + If _jsonColumns Then + ob.ToJson() + Else + ob.ToTable("ManyOwned", Sub(t) t.IsMemoryOptimized().ExcludeFromMigrations()) + End If + End Sub) + + eb.HasMany(Function(e) e.Principals). + WithMany(Function(e) DirectCast(e.Deriveds, ICollection(Of PrincipalDerived(Of DependentBase(Of Byte?))))). + UsingEntity( + Sub(jb) + jb.ToTable(Function(tb) tb.HasComment("Join table")) + jb.Property(Of Byte())("rowid"). + IsRowVersion(). + HasComment("RowVersion"). + HasColumnOrder(1) + End Sub) + + eb.Navigation(Function(e) e.Principals).AutoInclude().EnableLazyLoading(False) + + If Not _jsonColumns Then + eb.ToTable("PrincipalDerived") + End If + End Sub) + + modelBuilder.Entity(Of DependentBase(Of Byte?))( + Sub(eb) + eb.Property(Of Byte?)("Id") + + eb.HasKey({"PrincipalId", "PrincipalAlternateId"}) + + eb.HasOne(Of PrincipalBase)(). + WithOne(). + HasForeignKey(Of DependentBase(Of Byte?))("PrincipalId"). + HasPrincipalKey(Of PrincipalBase)(Function(e) e.Id) + + eb.HasDiscriminator(Of Enum1)("EnumDiscriminator"). + HasValue(Enum1.One). + HasValue(Of DependentDerived(Of Byte?))(Enum1.Two). + IsComplete(False) + End Sub) + + modelBuilder.Entity(Of DependentDerived(Of Byte?))( + Sub(eb) + eb.Property(Of String)("Data"). + HasMaxLength(20). + IsFixedLength(). + IsUnicode(False) + + eb.Property(Of Decimal)("Money"). + HasPrecision(9, 3) + End Sub) + End Sub + End Class + + Public Class ComplexTypesContext + Inherits SqlServerContextBase + + Protected Overrides Sub OnModelCreating(modelBuilder As ModelBuilder) + MyBase.OnModelCreating(modelBuilder) + + modelBuilder.Entity(Of PrincipalBase)( + Sub(eb) + eb.ComplexProperty( + Function(e) e.Owned, + Sub(ceb) + ceb.IsRequired(). + HasField("_ownedField"). + UsePropertyAccessMode(PropertyAccessMode.Field). + HasChangeTrackingStrategy(ChangeTrackingStrategy.ChangingAndChangedNotificationsWithOriginalValues). + HasPropertyAnnotation("goo", "ber"). + HasTypeAnnotation("go", "brr") + ceb.Property(Function(c) c.Details). + HasColumnName("Deets"). + HasColumnOrder(1). + HasColumnType("varchar"). + IsUnicode(False). + IsRequired(False). + HasField("_details"). + HasSentinel(""). + UsePropertyAccessMode(PropertyAccessMode.FieldDuringConstruction). + IsSparse(). + UseCollation("Latin1_General_CI_AI"). + HasMaxLength(64). + HasPrecision(3, 2). + HasComment("Dt"). + IsRowVersion(). + HasAnnotation("foo", "bar") + ceb.Ignore(Function(e) e.Context) + ceb.ComplexProperty(Function(o) o.Principal) + End Sub) + + eb.ToTable("PrincipalBase") + eb.ToView("PrincipalBaseView") + eb.ToSqlQuery("select * from PrincipalBase") + eb.ToFunction("PrincipalBaseTvf") + + eb.InsertUsingStoredProcedure( + Sub(s) s.HasParameter("PrincipalBaseId"). + HasParameter("Enum1"). + HasParameter("Enum2"). + HasParameter("FlagsEnum1"). + HasParameter("FlagsEnum2"). + HasParameter("Discriminator"). + HasParameter(Function(p) p.Id, Function(p) p.IsOutput())) + + eb.UpdateUsingStoredProcedure( + Sub(s) s.HasParameter("PrincipalBaseId"). + HasParameter("Enum1"). + HasParameter("Enum2"). + HasParameter("FlagsEnum1"). + HasParameter("FlagsEnum2"). + HasOriginalValueParameter(Function(p) p.Id)) + + eb.DeleteUsingStoredProcedure( + Sub(s) s.HasRowsAffectedReturnValue(). + HasOriginalValueParameter(Function(p) p.Id)) + End Sub) + + modelBuilder.Entity(Of PrincipalDerived(Of DependentBase(Of Byte?)))( + Sub(eb) + ' eb.ComplexCollection(TypeOf(OwnedType).Name, "ManyOwned") + eb.Ignore(Function(p) p.Dependent) + eb.Ignore(Function(p) p.Principals) + eb.ToTable("PrincipalBase") + eb.ToFunction(CType(Nothing, String)) + End Sub) + End Sub + End Class + + + Public Sub TPC_model() + + Dim rm1 = + +Imports EntityFrameworkCore.VisualBasic.Scaffolding.Internal +Imports Microsoft.EntityFrameworkCore.Infrastructure +Imports Microsoft.EntityFrameworkCore.Metadata + +Namespace TestNamespace + + Public Partial Class TpcContextModel + Inherits RuntimeModel + + Private Shared _Instance As TpcContextModel + Public Shared ReadOnly Property Instance As IModel + Get + Return _Instance + End Get + End Property + + Shared Sub New() + Dim model As New TpcContextModel() + model.Initialize() + model.Customize() + _Instance = model + End Sub + + Partial Private Sub Initialize() + End Sub + + Partial Private Sub Customize() + End Sub + End Class +End Namespace +]]>.Value + + Dim rm2 = + +Imports System +Imports System.Collections.Generic +Imports Microsoft.EntityFrameworkCore +Imports Microsoft.EntityFrameworkCore.Infrastructure +Imports Microsoft.EntityFrameworkCore.Metadata +Imports Microsoft.EntityFrameworkCore.Metadata.Internal +Imports Microsoft.EntityFrameworkCore.Migrations + +Namespace TestNamespace + Public Partial Class TpcContextModel + + Private Sub Initialize() + Dim dependentBase = DependentBaseEntityType.Create(Me) + Dim principalBase = PrincipalBaseEntityType.Create(Me) + Dim principalDerived = PrincipalDerivedEntityType.Create(Me, principalBase) + + DependentBaseEntityType.CreateForeignKey1(dependentBase, principalDerived) + PrincipalBaseEntityType.CreateForeignKey1(principalBase, principalBase) + PrincipalBaseEntityType.CreateForeignKey2(principalBase, principalDerived) + + DependentBaseEntityType.CreateAnnotations(dependentBase) + PrincipalBaseEntityType.CreateAnnotations(principalBase) + PrincipalDerivedEntityType.CreateAnnotations(principalDerived) + + Dim sequences As New SortedDictionary(Of (String, String), ISequence)() + Dim principalBaseSequence As New RuntimeSequence( + "PrincipalBaseSequence", + Me, + GetType(Long), + schema:="TPC", + modelSchemaIsNull:=True) + + sequences(("PrincipalBaseSequence", Nothing)) = principalBaseSequence + + AddAnnotation("Relational:Sequences", sequences) + AddAnnotation("Relational:DefaultSchema", "TPC") + AddAnnotation("Relational:MaxIdentifierLength", 128) + AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn) + AddRuntimeAnnotation("Relational:RelationalModel", CreateRelationalModel()) + End Sub + + Private Function CreateRelationalModel() As IRelationalModel + Dim relationalModel As New RelationalModel(Me) + + Dim dependentBase = FindEntityType("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+DependentBase") + + Dim defaultTableMappings As New List(Of TableMappingBase(Of ColumnMappingBase))() + dependentBase.SetRuntimeAnnotation("Relational:DefaultMappings", defaultTableMappings) + Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase As New TableBase("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+DependentBase", Nothing, relationalModel) + Dim idColumnBase As New ColumnBase(Of ColumnMappingBase)("Id", "tinyint", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.Columns.Add("Id", idColumnBase) + Dim principalIdColumnBase As New ColumnBase(Of ColumnMappingBase)("PrincipalId", "bigint", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase) With { + .IsNullable = True + } + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.Columns.Add("PrincipalId", principalIdColumnBase) + relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+DependentBase", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase) + Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase As New TableMappingBase(Of ColumnMappingBase)(dependentBase, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase, True) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase, False) + defaultTableMappings.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), dependentBase.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) + RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("PrincipalId"), ColumnBase(Of ColumnMappingBase)), dependentBase.FindProperty("PrincipalId"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) + + Dim tableMappings As New List(Of TableMapping)() + dependentBase.SetRuntimeAnnotation("Relational:TableMappings", tableMappings) + Dim dependentBasebyteTable As New Table("DependentBase", "TPC", relationalModel) + Dim idColumn As New Column("Id", "tinyint", dependentBasebyteTable) + dependentBasebyteTable.Columns.Add("Id", idColumn) + Dim principalIdColumn As New Column("PrincipalId", "bigint", dependentBasebyteTable) With { + .IsNullable = True + } + dependentBasebyteTable.Columns.Add("PrincipalId", principalIdColumn) + Dim pK_DependentBasebyte As New UniqueConstraint("PK_DependentBase", dependentBasebyteTable, {idColumn}) + dependentBasebyteTable.PrimaryKey = pK_DependentBasebyte + Dim pK_DependentBasebyteUc = RelationalModel.GetKey(Me, + "EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+DependentBase", + {"Id"}) + pK_DependentBasebyte.MappedKeys.Add(pK_DependentBasebyteUc) + RelationalModel.GetOrCreateUniqueConstraints(pK_DependentBasebyteUc).Add(pK_DependentBasebyte) + dependentBasebyteTable.UniqueConstraints.Add("PK_DependentBase", pK_DependentBasebyte) + Dim iX_DependentBasebyte_PrincipalId As New TableIndex( + "IX_DependentBase_PrincipalId", dependentBasebyteTable, {principalIdColumn}, True) + Dim iX_DependentBasebyte_PrincipalIdIx = RelationalModel.GetIndex(Me, + "EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+DependentBase", + {"PrincipalId"}) + iX_DependentBasebyte_PrincipalId.MappedIndexes.Add(iX_DependentBasebyte_PrincipalIdIx) + RelationalModel.GetOrCreateTableIndexes(iX_DependentBasebyte_PrincipalIdIx).Add(iX_DependentBasebyte_PrincipalId) + dependentBasebyteTable.Indexes.Add("IX_DependentBase_PrincipalId", iX_DependentBasebyte_PrincipalId) + relationalModel.Tables.Add(("DependentBase", "TPC"), dependentBasebyteTable) + Dim dependentBasebyteTableMapping As New TableMapping(dependentBase, dependentBasebyteTable, True) + dependentBasebyteTable.AddTypeMapping(dependentBasebyteTableMapping, False) + tableMappings.Add(dependentBasebyteTableMapping) + RelationalModel.CreateColumnMapping(dependentBasebyteTable.FindColumn("Id"), dependentBase.FindProperty("Id"), dependentBasebyteTableMapping) + RelationalModel.CreateColumnMapping(dependentBasebyteTable.FindColumn("PrincipalId"), dependentBase.FindProperty("PrincipalId"), dependentBasebyteTableMapping) + + Dim principalBase = FindEntityType("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase") + + Dim defaultTableMappings0 As New List(Of TableMappingBase(Of ColumnMappingBase))() + principalBase.SetRuntimeAnnotation("Relational:DefaultMappings", defaultTableMappings0) + Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase As New TableBase("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase", Nothing, relationalModel) + Dim enum1ColumnBase As New ColumnBase(Of ColumnMappingBase)("Enum1", "int", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("Enum1", enum1ColumnBase) + Dim enum2ColumnBase As New ColumnBase(Of ColumnMappingBase)("Enum2", "int", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) With { + .IsNullable = True + } + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("Enum2", enum2ColumnBase) + Dim flagsEnum1ColumnBase As New ColumnBase(Of ColumnMappingBase)("FlagsEnum1", "int", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("FlagsEnum1", flagsEnum1ColumnBase) + Dim flagsEnum2ColumnBase As New ColumnBase(Of ColumnMappingBase)("FlagsEnum2", "int", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("FlagsEnum2", flagsEnum2ColumnBase) + Dim idColumnBase0 As New ColumnBase(Of ColumnMappingBase)("Id", "bigint", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("Id", idColumnBase0) + Dim principalBaseIdColumnBase As New ColumnBase(Of ColumnMappingBase)("PrincipalBaseId", "bigint", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) With { + .IsNullable = True + } + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("PrincipalBaseId", principalBaseIdColumnBase) + Dim principalDerivedDependentBasebyteIdColumnBase As New ColumnBase(Of ColumnMappingBase)("PrincipalDerived>Id", "bigint", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) With { + .IsNullable = True + } + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.Columns.Add("PrincipalDerived>Id", principalDerivedDependentBasebyteIdColumnBase) + relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalBase", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase) + Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase As New TableMappingBase(Of ColumnMappingBase)(principalBase, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase, False) + defaultTableMappings0.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), principalBase.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("Enum1"), ColumnBase(Of ColumnMappingBase)), principalBase.FindProperty("Enum1"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseTableBase.FindColumn("Enum2"), ColumnBase(Of ColumnMappingBase)), principalBase.FindProperty("Enum2"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalBaseMappingBase) @@ -4823,7 +5881,7 @@ Namespace TestNamespace principalBaseTable.Indexes.Add("PIX", pIX) relationalModel.Tables.Add(("PrincipalBase", "TPC"), principalBaseTable) Dim principalBaseTableMapping As New TableMapping(principalBase, principalBaseTable, False) - principalBaseTable.AddEntityTypeMapping(principalBaseTableMapping, False) + principalBaseTable.AddTypeMapping(principalBaseTableMapping, False) tableMappings0.Add(principalBaseTableMapping) RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Id"), principalBase.FindProperty("Id"), principalBaseTableMapping) RelationalModel.CreateColumnMapping(principalBaseTable.FindColumn("Enum1"), principalBase.FindProperty("Enum1"), principalBaseTableMapping) @@ -4858,7 +5916,7 @@ Namespace TestNamespace principalBaseViewView.Columns.Add("PrincipalDerivedId", principalDerivedIdViewColumn) relationalModel.Views.Add(("PrincipalBaseView", "TPC"), principalBaseViewView) Dim principalBaseViewViewMapping As New ViewMapping(principalBase, principalBaseViewView, False) - principalBaseViewView.AddEntityTypeMapping(principalBaseViewViewMapping, False) + principalBaseViewView.AddTypeMapping(principalBaseViewViewMapping, False) viewMappings.Add(principalBaseViewViewMapping) RelationalModel.CreateViewColumnMapping(principalBaseViewView.FindColumn("Id"), principalBase.FindProperty("Id"), principalBaseViewViewMapping) RelationalModel.CreateViewColumnMapping(principalBaseViewView.FindColumn("Enum1"), principalBase.FindProperty("Enum1"), principalBaseViewViewMapping) @@ -4878,7 +5936,7 @@ Namespace TestNamespace relationalModel.StoredProcedures.Add(("PrincipalBase_Delete", "TPC"), principalBase_DeleteStoreSproc) Dim principalBase_DeleteDSproc = DirectCast(principalBase.GetDeleteStoredProcedure(), IRuntimeStoredProcedure) Dim principalBase_DeleteSprocMapping As New StoredProcedureMapping(principalBase, principalBase_DeleteStoreSproc, DirectCast(principalBase.GetDeleteStoredProcedure(), IRuntimeStoredProcedure), principalBaseTableMapping, False) - principalBase_DeleteStoreSproc.AddEntityTypeMapping(principalBase_DeleteSprocMapping, False) + principalBase_DeleteStoreSproc.AddTypeMapping(principalBase_DeleteSprocMapping, False) deleteSprocMappings.Add(principalBase_DeleteSprocMapping) principalBaseTableMapping.DeleteStoredProcedureMapping = principalBase_DeleteSprocMapping RelationalModel.CreateStoredProcedureParameterMapping(id_OriginalParameter, principalBase_DeleteDSproc.FindParameter("Id_Original"), principalBase.FindProperty("Id"), principalBase_DeleteSprocMapping) @@ -4910,7 +5968,7 @@ Namespace TestNamespace relationalModel.StoredProcedures.Add(("PrincipalBase_Insert", "TPC"), principalBase_InsertStoreSproc) Dim principalBase_InsertISproc = DirectCast(principalBase.GetInsertStoredProcedure(), IRuntimeStoredProcedure) Dim principalBase_InsertSprocMapping As New StoredProcedureMapping(principalBase, principalBase_InsertStoreSproc, DirectCast(principalBase.GetInsertStoredProcedure(), IRuntimeStoredProcedure), principalBaseTableMapping, False) - principalBase_InsertStoreSproc.AddEntityTypeMapping(principalBase_InsertSprocMapping, False) + principalBase_InsertStoreSproc.AddTypeMapping(principalBase_InsertSprocMapping, False) insertSprocMappings.Add(principalBase_InsertSprocMapping) principalBaseTableMapping.InsertStoredProcedureMapping = principalBase_InsertSprocMapping RelationalModel.CreateStoredProcedureParameterMapping(baseIdParameter, principalBase_InsertISproc.FindParameter("BaseId"), principalBase.FindProperty("Id"), principalBase_InsertSprocMapping) @@ -4948,7 +6006,7 @@ Namespace TestNamespace relationalModel.StoredProcedures.Add(("PrincipalBase_Update", "TPC"), principalBase_UpdateStoreSproc) Dim principalBase_UpdateUSproc = DirectCast(principalBase.GetUpdateStoredProcedure(), IRuntimeStoredProcedure) Dim principalBase_UpdateSprocMapping As New StoredProcedureMapping(principalBase, principalBase_UpdateStoreSproc, DirectCast(principalBase.GetUpdateStoredProcedure(), IRuntimeStoredProcedure), principalBaseTableMapping, False) - principalBase_UpdateStoreSproc.AddEntityTypeMapping(principalBase_UpdateSprocMapping, False) + principalBase_UpdateStoreSproc.AddTypeMapping(principalBase_UpdateSprocMapping, False) updateSprocMappings.Add(principalBase_UpdateSprocMapping) principalBaseTableMapping.UpdateStoredProcedureMapping = principalBase_UpdateSprocMapping RelationalModel.CreateStoredProcedureParameterMapping(id_OriginalParameter0, principalBase_UpdateUSproc.FindParameter("Id_Original"), principalBase.FindProperty("Id"), principalBase_UpdateSprocMapping) @@ -4986,7 +6044,7 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.Columns.Add("PrincipalDerived>Id", principalDerivedDependentBasebyteIdColumnBase0) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+PrincipalDerived>", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase As New TableMappingBase(Of ColumnMappingBase)(principalDerived, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase, False) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase, False) defaultTableMappings1.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), principalDerived.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteTableBase.FindColumn("Enum1"), ColumnBase(Of ColumnMappingBase)), principalDerived.FindProperty("Enum1"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestPrincipalDerivedEntityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDependentBasebyteMappingBase) @@ -5045,7 +6103,7 @@ Namespace TestNamespace principalDerivedTable.Indexes.Add("PIX", pIX0) relationalModel.Tables.Add(("PrincipalDerived", "TPC"), principalDerivedTable) Dim principalDerivedTableMapping As New TableMapping(principalDerived, principalDerivedTable, False) - principalDerivedTable.AddEntityTypeMapping(principalDerivedTableMapping, False) + principalDerivedTable.AddTypeMapping(principalDerivedTableMapping, False) tableMappings1.Add(principalDerivedTableMapping) RelationalModel.CreateColumnMapping(principalDerivedTable.FindColumn("Id"), principalDerived.FindProperty("Id"), principalDerivedTableMapping) RelationalModel.CreateColumnMapping(principalDerivedTable.FindColumn("Enum1"), principalDerived.FindProperty("Enum1"), principalDerivedTableMapping) @@ -5080,7 +6138,7 @@ Namespace TestNamespace principalDerivedViewView.Columns.Add("PrincipalDerivedId", principalDerivedIdViewColumn0) relationalModel.Views.Add(("PrincipalDerivedView", "TPC"), principalDerivedViewView) Dim principalDerivedViewViewMapping As New ViewMapping(principalDerived, principalDerivedViewView, False) - principalDerivedViewView.AddEntityTypeMapping(principalDerivedViewViewMapping, False) + principalDerivedViewView.AddTypeMapping(principalDerivedViewViewMapping, False) viewMappings0.Add(principalDerivedViewViewMapping) RelationalModel.CreateViewColumnMapping(principalDerivedViewView.FindColumn("Id"), principalDerived.FindProperty("Id"), principalDerivedViewViewMapping) RelationalModel.CreateViewColumnMapping(principalDerivedViewView.FindColumn("Enum1"), principalDerived.FindProperty("Enum1"), principalDerivedViewViewMapping) @@ -5099,7 +6157,7 @@ Namespace TestNamespace relationalModel.StoredProcedures.Add(("Derived_Delete", "TPC"), derived_DeleteStoreSproc) Dim derived_DeleteDSproc = DirectCast(principalDerived.GetDeleteStoredProcedure(), IRuntimeStoredProcedure) Dim derived_DeleteSprocMapping As New StoredProcedureMapping(principalDerived, derived_DeleteStoreSproc, DirectCast(principalDerived.GetDeleteStoredProcedure(), IRuntimeStoredProcedure), principalDerivedTableMapping, False) - derived_DeleteStoreSproc.AddEntityTypeMapping(derived_DeleteSprocMapping, False) + derived_DeleteStoreSproc.AddTypeMapping(derived_DeleteSprocMapping, False) deleteSprocMappings0.Add(derived_DeleteSprocMapping) principalDerivedTableMapping.DeleteStoredProcedureMapping = derived_DeleteSprocMapping RelationalModel.CreateStoredProcedureParameterMapping(id_OriginalParameter1, derived_DeleteDSproc.FindParameter("Id_Original"), principalDerived.FindProperty("Id"), derived_DeleteSprocMapping) @@ -5131,7 +6189,7 @@ Namespace TestNamespace relationalModel.StoredProcedures.Add(("Derived_Insert", "TPC"), derived_InsertStoreSproc) Dim derived_InsertISproc = DirectCast(principalDerived.GetInsertStoredProcedure(), IRuntimeStoredProcedure) Dim derived_InsertSprocMapping As New StoredProcedureMapping(principalDerived, derived_InsertStoreSproc, DirectCast(principalDerived.GetInsertStoredProcedure(), IRuntimeStoredProcedure), principalDerivedTableMapping, False) - derived_InsertStoreSproc.AddEntityTypeMapping(derived_InsertSprocMapping, False) + derived_InsertStoreSproc.AddTypeMapping(derived_InsertSprocMapping, False) insertSprocMappings0.Add(derived_InsertSprocMapping) principalDerivedTableMapping.InsertStoredProcedureMapping = derived_InsertSprocMapping RelationalModel.CreateStoredProcedureParameterMapping(enum1Parameter1, derived_InsertISproc.FindParameter("Enum1"), principalDerived.FindProperty("Enum1"), derived_InsertSprocMapping) @@ -5169,7 +6227,7 @@ Namespace TestNamespace relationalModel.StoredProcedures.Add(("Derived_Update", "Derived"), derived_UpdateStoreSproc) Dim derived_UpdateUSproc = DirectCast(principalDerived.GetUpdateStoredProcedure(), IRuntimeStoredProcedure) Dim derived_UpdateSprocMapping As New StoredProcedureMapping(principalDerived, derived_UpdateStoreSproc, DirectCast(principalDerived.GetUpdateStoredProcedure(), IRuntimeStoredProcedure), principalDerivedTableMapping, False) - derived_UpdateStoreSproc.AddEntityTypeMapping(derived_UpdateSprocMapping, False) + derived_UpdateStoreSproc.AddTypeMapping(derived_UpdateSprocMapping, False) updateSprocMappings0.Add(derived_UpdateSprocMapping) principalDerivedTableMapping.UpdateStoredProcedureMapping = derived_UpdateSprocMapping RelationalModel.CreateStoredProcedureParameterMapping(id_OriginalParameter2, derived_UpdateUSproc.FindParameter("Id_Original"), principalDerived.FindProperty("Id"), derived_UpdateSprocMapping) @@ -6004,6 +7062,9 @@ End Namespace Private _context As Microsoft.EntityFrameworkCore.DbContext + Public Sub New() + End Sub + Public Sub New(context As Microsoft.EntityFrameworkCore.DbContext) Me.Context = context End Sub @@ -6020,11 +7081,23 @@ End Namespace End Property Public Property Number As Integer + + + Public Property Principal As PrincipalBase + + Private _details As String + Public Property Details As String + Get + Return _details + End Get + Set + _details = Value + End Set + End Property Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged Public Event PropertyChanging As PropertyChangingEventHandler Implements INotifyPropertyChanging.PropertyChanging - End Class @@ -6212,7 +7285,7 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.Columns.Add("Blob", blobColumnBase) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+Data", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase As New TableMappingBase(Of ColumnMappingBase)(data, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase, False) defaultTableMappings.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.FindColumn("Blob"), ColumnBase(Of ColumnMappingBase)), data.FindProperty("Blob"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) @@ -6228,7 +7301,7 @@ Namespace TestNamespace ("GetAllData", "dbo", New String() {}), getAllDataFunction) Dim getAllDataFunctionMapping As New FunctionMapping(data, getAllDataFunction, getAllData, True) - getAllDataFunction.AddEntityTypeMapping(getAllDataFunctionMapping, False) + getAllDataFunction.AddTypeMapping(getAllDataFunctionMapping, False) functionMappings.Add(getAllDataFunctionMapping) getAllDataFunctionMapping.IsDefaultFunctionMapping = True RelationalModel.CreateFunctionColumnMapping(getAllDataFunction.FindColumn("Blob"), data.FindProperty("Blob"), getAllDataFunctionMapping) @@ -6243,7 +7316,7 @@ Namespace TestNamespace ("GetData", "dbo", {"int"}), getDataFunction) Dim getDataFunctionMapping As New FunctionMapping(data, getDataFunction, getData, True) - getDataFunction.AddEntityTypeMapping(getDataFunctionMapping, False) + getDataFunction.AddTypeMapping(getDataFunctionMapping, False) functionMappings.Add(getDataFunctionMapping) RelationalModel.CreateFunctionColumnMapping(getDataFunction.FindColumn("Blob"), data.FindProperty("Blob"), getDataFunctionMapping) @@ -6254,7 +7327,7 @@ Namespace TestNamespace Dim objectTableBase As New TableBase("object", Nothing, relationalModel) relationalModel.DefaultTables.Add("object", objectTableBase) Dim objectMappingBase As New TableMappingBase(Of ColumnMappingBase)([object], objectTableBase, True) - objectTableBase.AddEntityTypeMapping(objectMappingBase, False) + objectTableBase.AddTypeMapping(objectMappingBase, False) defaultTableMappings0.Add(objectMappingBase) Dim functionMappings0 As New List(Of FunctionMapping)() @@ -6265,7 +7338,7 @@ Namespace TestNamespace ("GetBlobs", "dbo", New String() {}), getBlobsFunction) Dim getBlobsFunctionMapping As New FunctionMapping([object], getBlobsFunction, getBlobs, True) - getBlobsFunction.AddEntityTypeMapping(getBlobsFunctionMapping, False) + getBlobsFunction.AddTypeMapping(getBlobsFunctionMapping, False) functionMappings0.Add(getBlobsFunctionMapping) getBlobsFunctionMapping.IsDefaultFunctionMapping = True Dim customerOrderCount = DirectCast(Me.FindDbFunction("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+DbFunctionContext.GetCount(System.Guid?,string)"), IRuntimeDbFunction) @@ -6472,7 +7545,7 @@ End Namespace Assert.Empty(getData.GetRuntimeAnnotations()) Assert.Null(getData.TypeMapping?.StoreType) Assert.Null(getData.StoreFunction.ReturnType) - Assert.Equal(GetType(Data), getData.StoreFunction.EntityTypeMappings.Single().EntityType.ClrType) + Assert.Equal(GetType(Data), getData.StoreFunction.EntityTypeMappings.Single().TypeBase.ClrType) Assert.Single(getData.Parameters) Dim getDataParameter = getData.Parameters(0) @@ -6500,7 +7573,7 @@ End Namespace Assert.Empty(getDataParameterless.GetAnnotations()) Assert.Empty(getDataParameterless.GetRuntimeAnnotations()) Assert.False(getDataParameterless.StoreFunction.IsBuiltIn) - Assert.Equal(GetType(Data), getDataParameterless.StoreFunction.EntityTypeMappings.Single().EntityType.ClrType) + Assert.Equal(GetType(Data), getDataParameterless.StoreFunction.EntityTypeMappings.Single().TypeBase.ClrType) Assert.Equal(0, getDataParameterless.Parameters.Count) Assert.Equal(2, model.GetEntityTypes().Count()) @@ -6708,7 +7781,7 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.Columns.Add("Id", idColumnBase) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+Data", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase As New TableMappingBase(Of ColumnMappingBase)(data, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase, False) defaultTableMappings.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), data.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.FindColumn("Blob"), ColumnBase(Of ColumnMappingBase)), data.FindProperty("Blob"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) @@ -6732,7 +7805,7 @@ Namespace TestNamespace dataTable.UniqueConstraints.Add("PK_Data", pK_Data) relationalModel.Tables.Add(("Data", Nothing), dataTable) Dim dataTableMapping As New TableMapping(data, dataTable, True) - dataTable.AddEntityTypeMapping(dataTableMapping, False) + dataTable.AddTypeMapping(dataTableMapping, False) tableMappings.Add(dataTableMapping) RelationalModel.CreateColumnMapping(dataTable.FindColumn("Id"), data.FindProperty("Id"), dataTableMapping) RelationalModel.CreateColumnMapping(dataTable.FindColumn("Blob"), data.FindProperty("Blob"), dataTableMapping) @@ -6945,7 +8018,7 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.Columns.Add("Id", idColumnBase) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+Data", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase As New TableMappingBase(Of ColumnMappingBase)(data, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase, False) defaultTableMappings.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), data.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.FindColumn("Blob"), ColumnBase(Of ColumnMappingBase)), data.FindProperty("Blob"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) @@ -6969,7 +8042,7 @@ Namespace TestNamespace dataTable.UniqueConstraints.Add("PK_Data", pK_Data) relationalModel.Tables.Add(("Data", Nothing), dataTable) Dim dataTableMapping As New TableMapping(data, dataTable, True) - dataTable.AddEntityTypeMapping(dataTableMapping, False) + dataTable.AddTypeMapping(dataTableMapping, False) tableMappings.Add(dataTableMapping) RelationalModel.CreateColumnMapping(dataTable.FindColumn("Id"), data.FindProperty("Id"), dataTableMapping) RelationalModel.CreateColumnMapping(dataTable.FindColumn("Blob"), data.FindProperty("Blob"), dataTableMapping) @@ -7157,7 +8230,7 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.Columns.Add("Id", idColumnBase) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+Data", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase As New TableMappingBase(Of ColumnMappingBase)(data, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase, False) defaultTableMappings.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), data.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.FindColumn("Blob"), ColumnBase(Of ColumnMappingBase)), data.FindProperty("Blob"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) @@ -7181,7 +8254,7 @@ Namespace TestNamespace dataTable.UniqueConstraints.Add("PK_Data", pK_Data) relationalModel.Tables.Add(("Data", Nothing), dataTable) Dim dataTableMapping As New TableMapping(data, dataTable, True) - dataTable.AddEntityTypeMapping(dataTableMapping, False) + dataTable.AddTypeMapping(dataTableMapping, False) tableMappings.Add(dataTableMapping) RelationalModel.CreateColumnMapping(dataTable.FindColumn("Id"), data.FindProperty("Id"), dataTableMapping) RelationalModel.CreateColumnMapping(dataTable.FindColumn("Blob"), data.FindProperty("Blob"), dataTableMapping) @@ -7355,7 +8428,7 @@ Namespace TestNamespace entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.Columns.Add("Id", idColumnBase) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+Data", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase As New TableMappingBase(Of ColumnMappingBase)(data, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase, False) defaultTableMappings.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), data.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.FindColumn("Blob"), ColumnBase(Of ColumnMappingBase)), data.FindProperty("Blob"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) @@ -7381,7 +8454,7 @@ Namespace TestNamespace dataTable.Triggers.Add("Trigger2", data.FindDeclaredTrigger("Trigger2")) relationalModel.Tables.Add(("Data", Nothing), dataTable) Dim dataTableMapping As New TableMapping(data, dataTable, True) - dataTable.AddEntityTypeMapping(dataTableMapping, False) + dataTable.AddTypeMapping(dataTableMapping, False) tableMappings.Add(dataTableMapping) RelationalModel.CreateColumnMapping(dataTable.FindColumn("Id"), data.FindProperty("Id"), dataTableMapping) RelationalModel.CreateColumnMapping(dataTable.FindColumn("Blob"), data.FindProperty("Blob"), dataTableMapping) @@ -7564,7 +8637,7 @@ Namespace Microsoft.EntityFrameworkCore.Metadata entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.Columns.Add("Point", pointColumnBase) relationalModel.DefaultTables.Add("EntityFrameworkCore.VisualBasic.Scaffolding.Internal.VisualBasicRuntimeModelCodeGeneratorTest+Data", entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase) Dim entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase As New TableMappingBase(Of ColumnMappingBase)(data, entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase, True) - entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.AddEntityTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase, False) + entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.AddTypeMapping(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase, False) defaultTableMappings.Add(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.FindColumn("Id"), ColumnBase(Of ColumnMappingBase)), data.FindProperty("Id"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) RelationalModel.CreateColumnMapping(DirectCast(entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataTableBase.FindColumn("Blob"), ColumnBase(Of ColumnMappingBase)), data.FindProperty("Blob"), entityFrameworkCoreVisualBasicScaffoldingInternalVisualBasicRuntimeModelCodeGeneratorTestDataMappingBase) @@ -7593,7 +8666,7 @@ Namespace Microsoft.EntityFrameworkCore.Metadata dataTable.UniqueConstraints.Add("PK_Data", pK_Data) relationalModel.Tables.Add(("Data", Nothing), dataTable) Dim dataTableMapping As New TableMapping(data, dataTable, True) - dataTable.AddEntityTypeMapping(dataTableMapping, False) + dataTable.AddTypeMapping(dataTableMapping, False) tableMappings.Add(dataTableMapping) RelationalModel.CreateColumnMapping(dataTable.FindColumn("Id"), data.FindProperty("Id"), dataTableMapping) RelationalModel.CreateColumnMapping(dataTable.FindColumn("Blob"), data.FindProperty("Blob"), dataTableMapping) @@ -8109,10 +9182,10 @@ End Namespace .Add(BuildReference.ByName(GetType(MyJsonGuidReaderWriter).Assembly.GetName().Name)) End With - Dim Assembly = build.BuildInMemory() + Dim assembly = build.BuildInMemory() Dim modelTypeName = options.ContextType.Name & "Model" - Dim modelType = Assembly.GetType( + Dim modelType = assembly.GetType( If(String.IsNullOrEmpty(options.ModelNamespace), modelTypeName, options.ModelNamespace & "." & modelTypeName)) diff --git a/Test/EFCore.VisualBasic.Test/TestUtilities/BuildSource.vb b/Test/EFCore.VisualBasic.Test/TestUtilities/BuildSource.vb index a4af97b..ae7d332 100644 --- a/Test/EFCore.VisualBasic.Test/TestUtilities/BuildSource.vb +++ b/Test/EFCore.VisualBasic.Test/TestUtilities/BuildSource.vb @@ -85,11 +85,11 @@ Public Class BuildSource assemblyName:=projectName, syntaxTrees:=Sources.Select( Function(s) SyntaxFactory.ParseSyntaxTree( - text:=s.Value, - path:=s.Key, - options:=New VisualBasicParseOptions( - LanguageVersion.Latest, - If(EmitDocumentationDiagnostics, DocumentationMode.Diagnose, DocumentationMode.Parse)))), + text:=s.Value, + path:=s.Key, + options:=New VisualBasicParseOptions( + LanguageVersion.Latest, + If(EmitDocumentationDiagnostics, DocumentationMode.Diagnose, DocumentationMode.Parse)))), references:=refs, CreateVisualBasicCompilationOptions()) @@ -141,5 +141,4 @@ All diagnostics: {"BC40055", ReportDiagnostic.Suppress} }) End Function - End Class diff --git a/Test/EFCore.VisualBasic.Test/TestUtilities/EFCore.Relational.Tests/Metadata/RelationalModelTest.vb b/Test/EFCore.VisualBasic.Test/TestUtilities/EFCore.Relational.Tests/Metadata/RelationalModelTest.vb index 0ed2ef3..d95206d 100644 --- a/Test/EFCore.VisualBasic.Test/TestUtilities/EFCore.Relational.Tests/Metadata/RelationalModelTest.vb +++ b/Test/EFCore.VisualBasic.Test/TestUtilities/EFCore.Relational.Tests/Metadata/RelationalModelTest.vb @@ -27,14 +27,18 @@ Namespace Metadata Assert.Equal(expected.Schema, actual.Schema) Assert.Equal(expected.IsShared, actual.IsShared) - For Each expectedEntityType In expected.EntityTypeMappings.Select(Function(m) m.EntityType) - Dim actualEntityType = actual.EntityTypeMappings.Single(Function(m) m.EntityType.Name = expectedEntityType.Name).EntityType + For Each expectedEntityType In expected.EntityTypeMappings.Select(Function(m) m.TypeBase).Cast(Of IEntityType) + Dim actualEntityType = DirectCast(actual.EntityTypeMappings.Single(Function(m) m.TypeBase.Name = expectedEntityType.Name).TypeBase, IEntityType) Assert.Equal(expected.GetRowInternalForeignKeys(expectedEntityType).Count(), actual.GetRowInternalForeignKeys(actualEntityType).Count()) Assert.Equal(expected.GetReferencingRowInternalForeignKeys(expectedEntityType).Count(), actual.GetReferencingRowInternalForeignKeys(actualEntityType).Count()) Next + For Each expectedEntityType In expected.ComplexTypeMappings.Select(Function(m) m.TypeBase) + Dim actualEntityType = actual.ComplexTypeMappings.Single(Function(m) m.TypeBase.Name = expectedEntityType.Name).TypeBase + Next + Assert.Equal(expected.GetAnnotations(), actual.GetAnnotations(), AnnotationComparer.Instance) Assert.Equal(expected.GetRuntimeAnnotations(), actual.GetRuntimeAnnotations(), AnnotationComparer.Instance) End Sub @@ -49,7 +53,7 @@ Namespace Metadata End Sub Public Sub AssertEqualBase(expected As ITableMappingBase, actual As ITableMappingBase) - Assert.Equal(expected.EntityType.Name, actual.EntityType.Name) + Assert.Equal(expected.TypeBase.Name, actual.TypeBase.Name) Assert.Equal(expected.Table.SchemaQualifiedName, actual.Table.SchemaQualifiedName) Assert.Equal(expected.IncludesDerivedTypes, actual.IncludesDerivedTypes) Assert.Equal(expected.IsSharedTablePrincipal, actual.IsSharedTablePrincipal) @@ -219,7 +223,7 @@ Namespace Metadata expected.Columns.ZipAssert(actual.Columns, AddressOf AssertEqual) Assert.Equal(expected.Sql, actual.Sql) - Assert.Same(actual, actual.Model.FindView(actual.Name, actual.Schema)) + Assert.Same(actual, actual.Model.FindQuery(actual.Name)) expected.EntityTypeMappings.ZipAssert(actual.EntityTypeMappings, AddressOf AssertEqual) End Sub @@ -236,7 +240,7 @@ Namespace Metadata expected.PropertyMappings.ZipAssert(actual.PropertyMappings, AddressOf AssertEqual) - Assert.Same(actual, expected.SqlQuery.FindColumn(actual.Name)) + Assert.Same(actual, actual.SqlQuery.FindColumn(actual.Name)) End Sub Public Sub AssertEqual(expected As ISqlQueryColumnMapping, actual As ISqlQueryColumnMapping)