簡體   English   中英

遷移數據庫並添加新表時,是否需要 EntityFramework Code First 中的 Modelbuilder?

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

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