gpt4 book ai didi

c# - 无法使用 EntityFramework 教程添加迁移

转载 作者:行者123 更新时间:2023-11-30 23:04:38 31 4
gpt4 key购买 nike

我目前正忙于使用 EntityFramework 集成 Identity Server 4其文档页面上教程的一部分。我的项目正在使用 .NET Core 2.0。

一切都很顺利,直到它告诉我使用命令行添加迁移。这些命令是:

dotnet ef migrations add InitialIdentityServerPersistedGrantDbMigration -c PersistedGrantDbContext -o Data/Migrations/IdentityServer/PersistedGrantDb
dotnet ef migrations add InitialIdentityServerConfigurationDbMigration -c ConfigurationDbContext -o Data/Migrations/IdentityServer/ConfigurationDb

第一个执行没有问题,并将迁移添加到解决方案中。使用第二个命令后,它告诉我构建失败,并出现以下错误:
1>Migrations\IdentityServer\PersistedGrantDb\PersistedGrantDbContextModelSnapshot.cs(13,6,13,15):错误CS0579:重复的“DbContext”属性
1>Migrations\IdentityServer\PersistedGrantDb\PersistedGrantDbContextModelSnapshot.cs(16,33,16,43):错误CS0111:类型“PersistedGrantDbContextModelSnapshot”已经定义了一个名为“BuildModel”的具有相同参数类型的成员
1> 完成构建项目“IdentityServer.csproj”——失败。

现在,阅读了其他一些文章 and this announcement ,(设计时)DbContext 发现似乎已经改变。为了解决这个问题,我更改了一些代码。相关部分(据我所知):

Program.cs - 扩展方法:

 public static IWebHost Migrate(this IWebHost webhost)
{
using (var scope = webhost.Services.GetService<IServiceScopeFactory>().CreateScope())
{
scope.ServiceProvider.GetService<PersistedGrantDbContext>().Database.Migrate();

using (var dbContext = scope.ServiceProvider.GetRequiredService<ConfigurationDbContext>())
{
dbContext.Database.Migrate();
[etc...]
}
}
}

Main(...)中调用扩展方法:

var host = BuildWebHost(args).Migrate();
host.Run();

此外,我还删除了 InitializeDatabase来自 Startup.cs 的方法。

完成这些操作后,在使用命令行成功添加第一个迁移后,我的解决方案中几乎仍然出现相同的编译错误。

我在这里遗漏了什么吗?

干杯。

最佳答案

就我而言,我发现/Data/Migrations 和/Migrations 处都有一个 PersistedGrantDbContextModelSnapshot.cs* 文件。需要删除其中之一。

* 显然我的名字不同。

关于c# - 无法使用 EntityFramework 教程添加迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49295795/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com