在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();
}
}