我有一个名为
DbContext
的 context1
,我向其中添加了 IdentityDbContext
的依赖项。我还在数据访问层项目中添加了实体Identity
所需的NuGet包。
在我的视图所在的项目中搭建脚手架并将身份添加到脚手架后,我在尝试创建迁移时遇到持续错误。该错误提示我定义正在使用的数据库上下文,即使我在新创建的视图项目中将
DbContext
名称更改为 context2
也是如此。
我已确认数据库连接正常。然而,尽管观看了几个视频、阅读了其他问题和答案并遵循了与 .NET 6 类似的步骤,但我还是陷入了死胡同。在这种情况下,有人对我能做什么有什么建议吗?预先感谢。
我已确认数据库连接正常。 然而,尽管观看了几个视频,但阅读了其他 问题和答案以及与 .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 是用代码优先的方法编写的。此外,我想说,这完全取决于您的偏好,但混合两种方法总是会带来一些额外的麻烦。因此,尝试使用一种方法,即使您一开始可能需要遇到一些麻烦,但相信我,它会让您的生活和应用程序更加结构化和可维护。
注意:请参考此官方文档了解更多详情或示例。