【问题标题】:Scaffold DbContext The string argument 'sql' cannot be emptyScaffold DbContext 字符串参数“sql”不能为空
【发布时间】:2017-07-31 11:34:58
【问题描述】:

这是我的数据库表

CREATE TABLE `File` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date` varchar(50) DEFAULT NULL,
  `description` varchar(50) DEFAULT NULL,
  `extension` varchar(50) DEFAULT NULL,
  `path` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
)

我用来生成模型的命令:

Scaffold-DbContext "server=..;user id=..;password=..;database=..;sslmode=none;" MySql.Data.EntityFrameworkCore -OutputDir Models -f

我得到的错误:

System.ArgumentException: The string argument 'sql' cannot be empty.
   at Microsoft.EntityFrameworkCore.Utilities.Check.NullButNotEmpty(String value, String parameterName)
   at Microsoft.EntityFrameworkCore.RelationalPropertyBuilderExtensions.HasComputedColumnSql(PropertyBuilder propertyBuilder, String sql)
   at Microsoft.EntityFrameworkCore.Scaffolding.RelationalScaffoldingModelFactory.VisitColumn(EntityTypeBuilder builder, ColumnModel column)
   at Microsoft.EntityFrameworkCore.Scaffolding.RelationalScaffoldingModelFactory.VisitColumns(EntityTypeBuilder builder, ICollection`1 columns)
   at Microsoft.EntityFrameworkCore.Scaffolding.RelationalScaffoldingModelFactory.VisitTable(ModelBuilder modelBuilder, TableModel table)
   at Microsoft.EntityFrameworkCore.Scaffolding.RelationalScaffoldingModelFactory.VisitTables(ModelBuilder modelBuilder, ICollection`1 tables)
   at Microsoft.EntityFrameworkCore.Scaffolding.RelationalScaffoldingModelFactory.VisitDatabaseModel(ModelBuilder modelBuilder, DatabaseModel databaseModel)
   at Microsoft.EntityFrameworkCore.Scaffolding.RelationalScaffoldingModelFactory.CreateFromDatabaseModel(DatabaseModel databaseModel)
   at MySql.Data.EntityFrameworkCore.Design.Internal.MySQLScaffoldingModelFactory.Create(String connectionString, TableSelectionSet tableSelectionSet)
   at Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineeringGenerator.GetMetadataModel(ReverseEngineeringConfiguration configuration)
   at Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineeringGenerator.GenerateAsync(ReverseEngineeringConfiguration configuration, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContextAsync(String provider, String connectionString, String outputDir, String dbContextClassName, IEnumerable`1 schemas, IEnumerable`1 tables, Boolean useDataAnnotations, Boolean overwriteFiles, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.<ScaffoldContextImpl>d__22.MoveNext()
   at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source, Int32& length)
   at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass4_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
The string argument 'sql' cannot be empty.

它说 sql 参数不能为空,但我不在任何地方使用 'sql'。似乎是什么问题?

【问题讨论】:

    标签: mysql entity-framework .net-core scaffolding


    【解决方案1】:

    我已经通过使用Pomelo.EntityFrameworkCore.MySql 而不是MySql.Data.EntityFrameworkCore“修复”了这个问题

    【讨论】:

      猜你喜欢
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 2014-12-18
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多