c# - 如何在 Entity Framwowrk Core 中为代码优先方法创建一个新表
问题描述
最初我从下面的代码开始
public class ShareMyBlogPostContext : DbContext
{
public ShareMyBlogPostContext(DbContextOptions<ShareMyBlogPostContext> options):base(options)
{
}
public DbSet<User> Users { get; set; }
}
我运行以下命令来创建数据库表和迁移:
dotnet ef migrations add InitialDb
dotnet ef database update
但过了一段时间,我意识到我需要一个新实体,我更新了我的DbContext
类,如下所示:
public class ShareMyBlogPostContext : DbContext
{
public ShareMyBlogPostContext(DbContextOptions<ShareMyBlogPostContext> options) : base(options)
{ }
public DbSet<User> Users { get; set; }
public DbSet<Blog> Blogs { get; set; }
}
由于我刚刚开始项目并且表中的数据不多,因此从我的项目中删除数据库和文件夹中已经存在的表并重新执行上述命令Users
对我来说并不是什么大任务。这样我就能够创建一个名为.Users
Migrations
Blogs
但是如何在DbContext
不删除现有表和迁移的情况下创建新添加实体的新数据库表?因为这不会是每次的情况。
解决方案
嗨,请输入此命令
dotnet ef migrations add AddBlogs
dotnet ef database update
更多信息请访问此页面
此外,如果你想保留你的表,你必须更改 migration.cs 文件手册来添加你的表和字段,然后运行这个命令
dotnet ef database update
推荐阅读
- c++ - 为什么 Vec3b 不能初始化为数组?
- python - 在 Django 中使用 Celery:如何在任务中保存对象?
- node.js - npm 错误 - 验证 package.json 是否具有有效的“主”条目
- webpack - 如何使用 Next.js、Ant Design、Less 和 TypeScript 配置 Storybook.js Webpack
- javascript - 按过滤器排序数据,反应js
- c - 如何将结构的哪个成员的指示符传递给C中的函数
- python - 时间序列数据框到面板
- reactjs - 为什么 TypeScript 看不到嵌套值不能未定义?
- python - 有没有办法让 VSCode 自动使用最近的 Pipfile/pipenv?
- c++ - 有人可以纠正代码并解释为什么 gets() 没有正确读取值吗?