Что такое столбец модели в таблице MigrationHistory?

В EF6 при использовании Code First Migration создается таблица с именем __MigrationHistory с четырьмя столбцами:

MigrationId
ContextKey
Model
ProductVersion

Что такое двоичные данные в поле Model? Содержит ли она схему базы данных? Я имею в виду, если у меня есть база данных с сотнями таблиц, содержит ли поле Model их все?

Ответ 1

Внутри он использует эту функцию для получения значения для поля 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();
        }
    }

Итак, да, кажется, что поле содержит целую модель в сжатой форме.

Ответ 2

Для понимания процесса EF я бы предложил проверить Макс Васильев просветительский Внутри Entity Framework Migrations или Как просмотреть созданную Xml-схему.

В статье представлен образец проекта. Вам просто нужно сохранить один из выборочных выходов в файл .edmx и открыть его с помощью Visual Studio.

Ответ 3

На MSSQL используйте

SELECT *, CONVERT(xml, DECOMPRESS(Model)) FROM [dbo].[__MigrationHistory]