为什么迁移不适用于EF核心?

时间:2020-02-09 13:29:49

标签: c# entity-framework dll entity-framework-core

PM> Add-Migration
cmdlet Add-Migration at command pipeline position 1
Supply values for the following parameters:
Name: Initial
System.ArgumentNullException: Value cannot be null.
Parameter name: connectionString
   at Microsoft.EntityFrameworkCore.Utilities.Check.NotEmpty(String value, String parameterName)
   at Microsoft.EntityFrameworkCore.SqlServerDbContextOptionsExtensions.UseSqlServer(DbContextOptionsBuilder optionsBuilder, String connectionString, Action`1 sqlServerOptionsAction)
   at EFarmerPkModelLibrary.Context.EFarmerDbModel.OnConfiguring(DbContextOptionsBuilder optionsBuilder) in D:\New folder\projects\Agri-Project\ServerApp\EFarmer.pk\EntityModelLibrary\Entities\EFarmerModel.EFarmerDbModel.cs:line 57
   at Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider()
   at Microsoft.EntityFrameworkCore.Internal.InternalAccessorExtensions.GetService[TService](IInfrastructure`1 accessor)
   at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(Func`1 factory)
   at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType)
   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: connectionString

我在创建迁移时遇到此错误

下面是我对DbContext类的配置

string connectionString;
        public EFarmerDbModel() :
            base()
        {
            OnCreated();
        }
        public EFarmerDbModel(DbContextOptions options) :
            base(options)
        {
            OnCreated();
        }
        public EFarmerDbModel(string connectionString) :
            base(GetOptions(connectionString))
        {
            this.connectionString = connectionString;
            OnCreated();
        }
        //protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        //{
        //    optionsBuilder.UseLazyLoadingProxies()
        //        .UseSqlServer(connectionString);
        //    base.OnConfiguring(optionsBuilder);
        //}
        private static DbContextOptions GetOptions(string connectionString)
        {
            return SqlServerDbContextOptionsExtensions.UseSqlServer(new DbContextOptionsBuilder(), connectionString).Options;
        }
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
                optionsBuilder.UseLazyLoadingProxies()
                .UseSqlServer(connectionString);
            optionsBuilder.UseSqlServer(connectionString,
                x => x.MigrationsAssembly("EFarmerPkModelLibrary.Migrations"));
            CustomizeConfiguration(ref optionsBuilder);
            base.OnConfiguring(optionsBuilder);
        }

        partial void CustomizeConfiguration(ref DbContextOptionsBuilder optionsBuilder);

我想在这里提到我通过反向工程数据库来搭建Db Context和实体框架类。而且我正在库文件中使用实体框架。

0 个答案:

没有答案