天天看點

關于Entity Framework 的Code First模式生成的_MigrationHistory表的說明

在EF6中,當我們用Code First的模式進行程式設計時,EF會自動建立_MigrationHistory表包含以下4個字段:

MigrationId: 就是在Add-Migration指令中指定的<版本名>,EF會自動在前面加上時間戳
ContextKey: 主要作用是對Model進行分組,這樣不同項目的Model可以在同一個DB中互不幹擾
Model:EF會基于DBContext中包含的所有Entity Model生成位元組數組,核心代碼如下所示
ProductVersion:生成這個Migration的EF的版本号
           

生成Model的核心:

public virtual byte[] Compress(XDocument model)
    {
        DebugCheck.NotNull(model);

        using (var outStream = new MemoryStream())
        {
            using (var gzipStream = new GZipStream(outStream, CompressionMode.Compress))
            {
                model.Save(gzipStream);
            }

            return outStream.ToArray();
        }
    }