簡體   English   中英

實體框架6-數據庫架構未更新

[英]Entity Framework 6 - Database schema is not updating

我正在學習EF,我想先使用代碼來處理不同類型的繼承。

我最初從幾節課開始,然后運行了我的應用程序。 我看到數據庫創建時所有類都以表格表示。

但是,當我添加新的類或字段並再次運行該應用程序時,我看不到數據庫架構中的更改。

我已經使用了“ DropCreateDatabaseAlways”,所以我不明白為什么在添加字段和類時為什么沒有使用正確的架構更新數據庫。 有人可以解釋我在做什么錯嗎?

初始代碼:

namespace Domain
{
    public class Good
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public double BaseValue { get; set; }
    }

    public class Manufacturer {
        public int Id {get; set;}
        public ICollection<ManufacturingCapability> ManufacturingCapabilities { get; set; }
    }

    public class ManufacturingCapability {
        public int Id { get; set; }
        public ICollection<ManufacturingInput> Inputs { get; set; }
        public ICollection<ManufacturingOutput> Outputs { get; set; }
        public TimeSpan CycleTime { get; set; }
    }

    public class ManufacturingInput {

        public int Id { get; set; }
        public Good Good { get; set; }
        public uint Quantity { get; set; }
    }

    public class ManufacturingOutput {
        public int Id { get; set; }
        public Good Good { get; set; }
        public uint Quantity { get; set; }
    }

    public class ManufacturingDbContext :DbContext {

        public DbSet<Good> Goods { get; set; }
        public DbSet<Manufacturer> Manufacturers { get; set; }

        public ManufacturingDbContext() : base("name=EFLearnConnectionString") {
            Database.SetInitializer<ManufacturingDbContext>(new DropCreateDatabaseAlways<ManufacturingDbContext>());
        }
    }
}

namespace EFLearning {
    class Program {
        static void Main(string[] args) {
            using (var manufacturingDbContext = new ManufacturingDbContext()) {
                var good = new Good() { Name = "Water" };

                manufacturingDbContext.Goods.Add(good);
                manufacturingDbContext.SaveChanges();
            }
        }
    }
}

運行后,在Management Studio中使用數據庫表: 在此處輸入圖片說明

添加的代碼:

public class Station : Manufacturer {
    public string Name { get; set; }
    public Vector3 Location { get; set; }
}

我將其添加到上下文中:

public DbSet<Station> Stations { get; set; }

運行后,在Management Studio中使用數據庫表: 在此處輸入圖片說明

您對工位和制造商實體進行域設計的策略是“每個層次結構的表”,因此工位表中現在具有工位屬性。 請轉到此鏈接以獲取更多信息。

如果要工作站實體具有單獨的表,則必須使用每種類型的表,請轉到此鏈接以獲取每種類型的表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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