ASP.NET Core 8.0 MVC、数据库优先、C#:尝试通过迁移添加身份

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

我有一个名为

DbContext
context1
,我向其中添加了
IdentityDbContext
的依赖项。我还在数据访问层项目中添加了实体
Identity
所需的NuGet包。

在我的视图所在的项目中搭建脚手架并将身份添加到脚手架后,我在尝试创建迁移时遇到持续错误。该错误提示我定义正在使用的数据库上下文,即使我在新创建的视图项目中将

DbContext
名称更改为
context2
也是如此。

我已确认数据库连接正常。然而,尽管观看了几个视频、阅读了其他问题和答案并遵循了与 .NET 6 类似的步骤,但我还是陷入了死胡同。在这种情况下,有人对我能做什么有什么建议吗?预先感谢。

c# entity-framework asp.net-core-mvc asp.net-core-identity
1个回答
0
投票

我已确认数据库连接正常。 然而,尽管观看了几个视频,但阅读了其他 问题和答案以及与 .NET 6 类似的后续步骤, 我已经走进了死胡同。有人对我的事情有什么建议吗 这种情况可以做什么?预先感谢。

根据您的场景,从

context1
继承
IdentityDbContext
可能会导致冲突,因为您已经有由
context1
管理的现有表。

因此,您可以按照几个步骤来成功迁移您的项目。

首先,您可以为 Identity 分离 DbContext。这种方式将使您现有的数据库模式与 Identity 的表分开,避免冲突。

在这种情况下,您的program.cs 文件中需要有两个Dbcontext。如下:

builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); builder.Services.AddDbContext<IdentityDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
或者,您可以首先构建 Identity 配置,因为您还需要从 .NET 6 迁移到 .NET 8。因此,一旦您在 .NET 8 项目中成功实现了 Identity,那么您还可以根据之前的内容创建该类在.NET6上编写的数据库模式,这样,最初你会需要一些额外的麻烦,但从长远来看,你会得到很多好处,而且你最终会首先转向代码,因为 Identity 是用代码优先的方法编写的。

此外,我想说,这完全取决于您的偏好,但混合两种方法总是会带来一些额外的麻烦。因此,尝试使用一种方法,即使您一开始可能需要遇到一些麻烦,但相信我,它会让您的生活和应用程序更加结构化和可维护。

注意:参考此官方文档了解更多详情或示例。

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