Scaffold-DbContext throw ArgumentNullException - PullRequest
0 голосов
/ 14 ноября 2018

Я получаю следующее исключение при попытке создать одну из наших баз данных.

For foreign key FK_ActivityEvent_ActivityCode on table dbo.ActivityEvent, unable to find the column called UniqActivityCode on the foreign key's principal table, dbo.ActivityCode. Skipping foreign key.
For foreign key FK_Line_Line on table dbo.Line, unable to find the column called UniqLine on the foreign key's principal table, dbo.Line. Skipping foreign key.
For foreign key FK_MarketingLine_MarketingLine on table dbo.MarketingLine, unable to find the column called UniqMarketingLine on the foreign key's principal table, dbo.MarketingLine. Skipping foreign key.
System.ArgumentNullException: Value cannot be null.
Parameter name: column
  at Microsoft.EntityFrameworkCore.Utilities.Check.NotNull[T](T value, String parameterName)
  at Microsoft.EntityFrameworkCore.Scaffolding.Internal.RelationalScaffoldingModelFactory.GetPropertyName(DatabaseColumn column)
  at System.Linq.Enumerable.SelectListIterator`2.ToArray()
  at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
  at Microsoft.EntityFrameworkCore.Scaffolding.Internal.RelationalScaffoldingModelFactory.VisitPrimaryKey(EntityTypeBuilder builder, DatabaseTable table)
  at Microsoft.EntityFrameworkCore.Scaffolding.Internal.RelationalScaffoldingModelFactory.VisitTable(ModelBuilder modelBuilder, DatabaseTable table)
  at Microsoft.EntityFrameworkCore.Scaffolding.Internal.RelationalScaffoldingModelFactory.VisitTables(ModelBuilder modelBuilder, ICollection`1 tables)
  at Microsoft.EntityFrameworkCore.Scaffolding.Internal.RelationalScaffoldingModelFactory.VisitDatabaseModel(ModelBuilder modelBuilder, DatabaseModel databaseModel)
  at Microsoft.EntityFrameworkCore.Scaffolding.Internal.RelationalScaffoldingModelFactory.Create(DatabaseModel databaseModel, Boolean useDatabaseNames)
  at Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineerScaffolder.ScaffoldModel(String connectionString, IEnumerable`1 tables, IEnumerable`1 schemas, String namespace, String language, String contextDir, String contextName, ModelReverseEngineerOptions modelOptions, ModelCodeGenerationOptions codeOptions)
  at Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContext(String provider, String connectionString, String outputDir, String outputContextDir, String dbContextClassName, IEnumerable`1 schemas, IEnumerable`1 tables, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames)
  at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContextImpl(String provider, String connectionString, String outputDir, String outputDbContextDir, String dbContextClassName, IEnumerable`1 schemaFilters, IEnumerable`1 tableFilters, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames)
  at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContext.<>c__DisplayClass0_1.<.ctor>b__0()
  at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
  at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Value cannot be null.
Parameter name: column

Я успешно создал одну из наших баз данных, поэтому я уверен, что правильно использую команду scaffold. Кроме того, я могу получить доступ к базе данных, используя строку подключения, которую я ввел в команду Scaffold-DbContext.

Я установил следующие пакеты:

install-package microsoft.entityframeworkcore.sqlserver
install-package microsoft.entityframeworkcore.tools

Использование .NET Core Console App 2.1 в Windows 10.

Не уверен, что это связано, но я получаю следующее сообщение, когда пытаюсь развернуть Database Diagrams в ssms. (Я не получаю это сообщение в другой базе данных, которую я успешно создал)

enter image description here

...