C# .NET EF迁移 无法将类型为 "System.Double "的对象转换为类型为 "System.Single "的对象。

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

有一个工作的.NET Blazor应用程序与EF核心中。我读到过其他错误,包括 无法将类型为'System.Double'的对象转换为类型为'System.Single'的对象。 但我不明白这如何适用于数据上的迁移功能。

当migrations文件夹内没有迁移时,它运行得很好。当我添加一个迁移时,它在以下一行中断了 data.Database.Migrate();

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, AppDbContext data )
    {
        data.Database.Migrate();
    }

任何建议?

c# .net ef-migrations
1个回答
1
投票

正如Vikek在上面提到的,我们设置了一些错误。问题是我们有一个DbContextFactory.cs,它被硬编码为使用SqlServer,而新的startup.cs则使用UseMySql。我们基本上有迁移试图利用两种不同的sql服务器类型,它给我们这个错误。

这里是旧的DBContextFactory文件。

public AppDbContext CreateDbContext(string[] args)
    {
        var optionsBuilder = new DbContextOptionsBuilder<AppDbContext>();
        optionsBuilder.SqlServer(@"server=mssqlserver;userid=bigboy;pwd=thesecretpasswordformssql;database=devdb;AllowPublicKeyRetrieval=True;");
        return new AppDbContext(optionsBuilder.Options);

    }

已替换为:

public AppDbContext CreateDbContext(string[] args)
    {
        var optionsBuilder = new DbContextOptionsBuilder<AppDbContext>();
        optionsBuilder.UseMySql(@"server=mysql;userid=root;pwd=thesecretpassword;port=3306;database=devdb;sslmode=none;AllowPublicKeyRetrieval=True;");
        return new AppDbContext(optionsBuilder.Options);

    }

启动文件在寻找正确的mysql字符串 但DBContextFactory.cs导致了错误 因为它不能将mysql和mssql类型一起迁移。

© www.soinside.com 2019 - 2024. All rights reserved.