Gle*_*bby 4 ef-migrations entity-framework-core asp.net-core asp.net-core-2.0
将项目迁移到.NET Core 2.0,全新安装Visual Studio 15.5和.NET CORE sdk 2.1.2之后,尝试使用EF Core添加迁移时出现错误。
C:\Projects\SQLwallet\SQLwallet>dotnet ef migrations add IdentityServer.
An error occurred while calling method 'BuildWebHost' on class 'Program'.
Continuing without the application service provider. Error: Parameter count mismatch.
Done. To undo this action, use 'ef migrations remove'
Run Code Online (Sandbox Code Playgroud)
结果,使用空的Up()和Down()方法创建了一个空的迁移类。
program.cs看起来像:
public class Program
{
public static IWebHost BuildWebHost(string[] args, string environmentName)
{...}
public static void Main(string[] args)
{
IWebHost host;
host = BuildWebHost(args, "Development");
Run Code Online (Sandbox Code Playgroud)
请指教。在Core 1.0上,迁移工作正常。我实现了IDesignTimeDbContextFactory,并且我的DBContext类具有无参数的构造函数,因此可能不是原因。
我的解决方案是将Array传递给HasData函数,而不是generic List。如果使用列表,请尝试使用ToArray函数转换数组。
这是一个例子:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var users = new List<User>();
var user1 = new User() { Id = 1, Username = "user_1" };
var user2 = new User() { Id = 2, Username = "user_2" };
users = new List<User>() { user1, user2 };
modelBuilder.Entity<User>().HasData(users.ToArray());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
859 次 |
| 最近记录: |