【问题标题】:create a new sqlite table within the same database that was created during initialmigration在初始迁移期间创建的同一数据库中创建一个新的 sqlite 表
【发布时间】:2022-01-21 07:22:27
【问题描述】:

我对编程很陌生,并使用 asp.net core 和 MVC 开始了一个新项目。 因为我想看看幕后发生了什么,所以我使用 IdentityUser 和 IdentityDbContxt 手动实现了身份验证和授权。 在初始迁移期间,创建了一堆表,允许用户注册然后登录。我已经实现了所有这些。 现在我想在同一个数据库中创建一个新表,让用户提交他们的姓名和地址。我相信我可以使用 sqlite GUI 创建一个新表并使用它,但是我如何创建一个 UserProfileModel.cs 文件并使该架构显示在数据库中? 如果我的问题不是很清楚,我很抱歉。另外,我在 Mac 上使用 microsoft stack :)。 谢谢。

【问题讨论】:

    标签: c# asp.net sqlite model-view-controller


    【解决方案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 以及它是如何工作的,类似于我对身份验证和授权所做的工作。
    猜你喜欢
    • 2016-10-08
    • 1970-01-01
    • 2023-03-15
    • 2011-05-05
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    相关资源
    最近更新 更多