MigrationHistory表中的模型列是什么?

时间:2014-08-26 08:05:13

标签: c# entity-framework ef-migrations

在EF6中使用Code First Migration时,它会创建一个名为__MigrationHistory的表,其中包含四列:

MigrationId
ContextKey
Model
ProductVersion

Model字段中的二进制数据是什么?它是否包含数据库架构? 我的意思是,如果我有一个包含数百个表的数据库,Model字段是否包含所有表?

3 个答案:

答案 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]
相关问题