[英]When migrating from EF to EF Core do you need to create a new migration with the entire database structure?
[英]Do I need Modelbuilder from EntityFramework Code First when migrating my database and adding a new table?
例如,當我向我的域添加一個新類並將其添加到我的 DBContext 時:
我添加這個類
namespace Zoo.Domain
{
[Table("Owner")]
public partial class Owner
{
[Key]
public int ID { get; set; }
[Required]
public string Name { get; set; }
public string Email { get; set; }
public virtual ICollection<Animal> Animals { get; set; }
}
}
並將其添加到我的 Animal 類中:
public virtual ICollection<Owner> Owners { get; set; }
並將其添加到我的 DBContext 中:
public virtual DbSet<Owner> Owners { get; set; }
接下來,我通過在包管理器控制台中執行“add-migration AddAnimalOwners”命令和“update-database”命令來添加新的遷移。
EntityFrameWork 似乎為我創建了 Animal 和 Owner 之間的關系,但如果是這樣,為什么 ModelBuilder 存在,我更新數據庫時什么時候需要它? 例如,當我第一次創建我的數據庫時,下面的代碼出現在我的 DBContext 類中:
modelBuilder.Entity<Animal>()
.Property(e => e.Name)
.IsUnicode(false);
modelBuilder.Entity<Animal>()
.Property(e => e.Type)
.IsUnicode(false);
modelBuilder.Entity<Animal>()
.Property(e => e.ImgUrl)
.IsUnicode(false);
modelBuilder.Entity<Animal>()
.HasMany(e => e.Bookings)
.WithMany(e => e.Animals)
.Map(m => m.ToTable("Animal_has_booking").MapLeftKey("AnimalID").MapRightKey("BookingID"));
當我第一次創建我的數據庫時,它似乎也沒有為我域中的每個模型生成一個模型構建器
modelBuilder 用於允許您配置特定於給定數據庫的模型方面。 當您首次創建上下文以在內存中構建模型及其映射時,框架會調用它。 例如這里:
modelBuilder.Entity<Animal>() .HasMany(e => e.Bookings) .WithMany(e => e.Animals)
它指定 Bookings 和 Animals 之間存在多對多關系。 如果您沒有要指定的任何內容,則不需要使用模型構建器,這就是為什么您不會為每個模型看到它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.