Skip to content

[Bug]: InvalidCastException: DatabaseView cannot be cast to DatabaseTable in ValidateRelationships #3237

@robemm

Description

@robemm

What happened?

Defined relationship between two views fails with unhandled exception.

dab --validate
returns error

json snip:
"entities": {
"VeraJobs": {
"source": "dbo.VeraJobs",
"permissions": [...],
"relationships": {
"logs": {
"target.entity": "VeraJobLogs",
"cardinality": "many",
"source.fields": ["id"],
"target.fields": ["job_id"]
}
}
},
"VeraJobLogs": {
"source": "dbo.VeraJobLogs",
"permissions": [...],
"relationships": {
"job": {
"target.entity": "VeraJobs",
"cardinality": "one",
"source.fields": ["job_id"],
"target.fields": ["id"]
}
}
}
}

on-prem sql-server v 15.0.4445.1
windows server 2022

Version

1.7.90+76b4d4fbd1e42a6b048badb793bb424c6d166387

What database are you using?

Azure SQL

What hosting model are you using?

No response

Which API approach are you accessing DAB through?

No response

Relevant log output

Unhandled exception. System.AggregateException: One or more errors occurred. (Unable to cast object of type 'Azure.DataApiBuilder.Config.DatabasePrimitives.DatabaseView' to type 'Azure.DataApiBuilder.Config.DatabasePrimitives.DatabaseTable'.)
 ---> System.InvalidCastException: Unable to cast object of type 'Azure.DataApiBuilder.Config.DatabasePrimitives.DatabaseView' to type 'Azure.DataApiBuilder.Config.DatabasePrimitives.DatabaseTable'.
   at Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator.ValidateRelationships(RuntimeConfig runtimeConfig, IMetadataProviderFactory sqlMetadataProviderFactory) in /_/src/Core/Configurations/RuntimeConfigValidator.cs:line 1070
   at Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator.ValidateEntitiesMetadata(RuntimeConfig runtimeConfig, ILoggerFactory loggerFactory) in /_/src/Core/Configurations/RuntimeConfigValidator.cs:line 439
   at Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator.TryValidateConfig(String configFilePath, ILoggerFactory loggerFactory) in /_/src/Core/Configurations/RuntimeConfigValidator.cs:line 262
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
   at Cli.ConfigGenerator.IsConfigValid(ValidateOptions options, FileSystemRuntimeConfigLoader loader, IFileSystem fileSystem) in /_/src/Cli/ConfigGenerator.cs:line 2410
   at Cli.Commands.ValidateOptions.Handler(ILogger logger, FileSystemRuntimeConfigLoader loader, IFileSystem fileSystem) in /_/src/Cli/Commands/ValidateOptions.cs:line 33
   at Cli.Program.<>c__DisplayClass2_0.<Execute>b__5(ValidateOptions options) in /_/src/Cli/Program.cs:line 67
   at CommandLine.ParserResultExtensions.MapResult[T1,T2,T3,T4,T5,T6,T7,T8,TResult](ParserResult`1 result, Func`2 parsedFunc1, Func`2 parsedFunc2, Func`2 parsedFunc3, Func`2 parsedFunc4, Func`2 parsedFunc5, Func`2 parsedFunc6, Func`2 parsedFunc7, Func`2 parsedFunc8, Func`2 notParsedFunc)
   at Cli.Program.Execute(String[] args, ILogger cliLogger, IFileSystem fileSystem, FileSystemRuntimeConfigLoader loader) in /_/src/Cli/Program.cs:line 61
   at Cli.Program.Main(String[] args) in /_/src/Cli/Program.cs:line 41

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingtriageissues to be triaged

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions