![](/img/trans.png)
[英]Entity Framework Core 2.2.3 not creating table using code-first approach vs 2017
[英]How to create a new table in Entity Framwowrk Core for code-first approach
最初我從下面的代碼開始
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
class 如下:
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
EF 始終查看DbContext
派生的ShareMyBlogPostContext
(在您的情況下為 ShareMyBlogPostContext )以檢測更改。 有時您可能不會為新創建的 class 添加單獨的DbSet
實例,沒關系,如果您在此新創建的 class 和其中一個DbSet
類之間建立關系,則在您請求后將出現所需的表。 EF codefirst 中的所有內容都是完全托管的,除非您運行migrations add migrationName
(.net CLI 命令)以便為當前更改生成腳本,否則不會發生任何事情。 根據您的配置,除非您通過database update
請求,否則可能不會應用遷移。 這樣,你可能會有多次遷移,命令 Updates the database schema based on last migration snapshot 。
處理數據庫更改是任何項目的關鍵部分。 所以,請先閱讀EF 文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.