簡體   English   中英

如何在 Entity Framwowrk Core 中為代碼優先方法創建一個新表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM