在初始迁移期间创建的同一数据库中创建一个新的 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 测试期间创建表?

Ruby on Rails 迁移 - 创建新的数据库模式

在领域中创建对对象的引用的正确方法

用于创建表并在两个字段上添加唯一索引的 Rails 迁移文件在迁移期间似乎被忽略了

在迁移 laravel 5.2 中创建数据库视图

在迁移中创建集合