在初始迁移期间创建的同一数据库中创建一个新的 sqlite 表
Posted
技术标签:
【中文标题】在初始迁移期间创建的同一数据库中创建一个新的 sqlite 表【英文标题】:create a new sqlite table within the same database that was created during initialmigration 【发布时间】:2022-01-21 07:22:27 【问题描述】:我对编程很陌生,并使用 asp.net core 和 MVC 开始了一个新项目。 因为我想看看幕后发生了什么,所以我使用 IdentityUser 和 IdentityDbContxt 手动实现了身份验证和授权。 在初始迁移期间,创建了一堆表,允许用户注册然后登录。我已经实现了所有这些。 现在我想在同一个数据库中创建一个新表,让用户提交他们的姓名和地址。我相信我可以使用 sqlite GUI 创建一个新表并使用它,但是我如何创建一个 UserProfileModel.cs 文件并使该架构显示在数据库中? 如果我的问题不是很清楚,我很抱歉。另外,我在 Mac 上使用 microsoft stack :)。 谢谢。
【问题讨论】:
【参考方案1】:首先,您可以随时扩展IdientityUser,添加迁移,更新数据库,并将名称和地址添加到表中。
public class UserProfileModel:IdentityUser
如果您想拥有更多带有表格的模型,您必须创建一个扩展 IdentityDbContext 的类,将 db 选项传递给构造函数并添加您的 DbDets,这将用于创建表格。
public class AppDbContext : IdentityDbContext<User>
public DbSet<UserProfileModel> Residences get; set;
public RealEstateDbContext(DbContextOptions<AppDbContext> options) : base(options)
然后,在您配置服务的地方添加数据库,
services.AddDbContext<AppDbContext>(options => options.UseSqlite(configuration.GetConnectionString("Your Connection String")));
我假设你已经做到了,也许是使用 IdentityDbContext,但你可以添加你的自定义 DbContext。
现在您可以在任何您想使用的地方注入您的 AppDbContext。可能是服务或存储库。
【讨论】:
谢谢,我想我在使用 DbSet 属性方面取得了一些进展。我现在可以在迁移和模型快照中看到 UserProfileModel。但是当我运行添加迁移和更新命令时,我的 sqlite 数据库不显示新表。想知道发生了什么 所以我从昨天开始一直收到这个错误,“Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'table "AspNetRoles" already exists'. 所以我刚刚摆脱了迁移文件夹并重新进行了初始迁移,现在我的新表正在显示。我想我只需要更深入地研究 EF 以及它是如何工作的,类似于我对身份验证和授权所做的工作。以上是关于在初始迁移期间创建的同一数据库中创建一个新的 sqlite 表的主要内容,如果未能解决你的问题,请参考以下文章
如何在托管 = False 的 Django 测试期间创建表?