在EF CodeFirst for NetCore for Winforms的迁移中出错(DBCONTEXT文件)。

问题描述 投票:0回答:1

我在.NET Framework (Winforms)和.NET Core (Web)中使用EF CodeFirt没有问题。

但在EF CodeFirst中,当我进行新的迁移时,出现了一个错误。

System.NullReferenceException.Object reference not set to an instance of an object: 在Data.AppDbContext.OnConfiguring(DbContextOptionsBuilder optionsBuilder) in C:xxx/xxx/xxx/xxx/xxx/xxx/Data/AppDbContext.cs:第29行。

<connectionStrings>
    <add name="AppDbContext" connectionString="<ConnectionString>"/>
</connectionStrings>

APPDBCONTEXT

public class AppDbContext : DbContext
    {        
        public DbSet<Unit> Units { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
        optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["AppDbContext"].ConnectionString);
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            modelBuilder.ApplyConfiguration(new UnitConfiguration());            
        }
    }

因为WINFORMS不存在STARTUP.CS或APPSETTINGS.JSON来配置服务,我不知道该怎么办。

我尝试了许多搜索和许多解决方案在网络上,但错误持续。

c# winforms .net-core entity-framework-core dbcontext
1个回答
0
投票

我解决了这个问题,帮助 Karen Payne 样品和支持 Guru Stron. 谢谢!!。

问题是在OnConfiguring方法,因为任何原因的连接字符串在方法UseSqlServer都是NULL。

如果我在windows下从APP.CONFIG文件中读取的值是正确的,但是在OnConfiguring方法中是NULL。

解决方案(不是最好的解决方案)是使用一个字符串的ConnectionString参数和迁移工作。

现在等待从APP.CONFIG文件中读取ConnectionString参数并完成DbContext类。

附上代码

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            //ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; //
            string connectionString = "Data Source=(LocalDb)\\MSSQLLocalDB;Initial Catalog=REF_SIGIPRO;Integrated Security=SSPI;";
            if (!optionsBuilder.IsConfigured)
                optionsBuilder.UseSqlServer(connectionString);
        }
© www.soinside.com 2019 - 2024. All rights reserved.