在EF6中使用Code First Migration时,它会创建一个名为__MigrationHistory
的表,其中包含四列:
MigrationId
ContextKey
Model
ProductVersion
Model
字段中的二进制数据是什么?它是否包含数据库架构?
我的意思是,如果我有一个包含数百个表的数据库,Model
字段是否包含所有表?
答案 0 :(得分:11)
在内部,它使用此函数获取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();
}
}
所以,是的,该字段似乎包含压缩形式的整个模型。
答案 1 :(得分:4)
为了 EF的移植流程理解,我建议您查看 Max Vasilyev 的启发Inside of Entity Framework Migrations or How to View Generated Xml-Schema文章。
该文章提供sample project。 您只需将其中一个示例输出保存到 .edmx 文件,然后使用 Visual Studio 打开它。
答案 2 :(得分:3)
在MSSQL上使用
SELECT *, CONVERT(xml, DECOMPRESS(Model)) FROM [dbo].[__MigrationHistory]