0

如何解压缩/读取存储在 EF 4.3 Code First Migrations __MigrationHistory 表中的压缩模型?

我在这条评论中发现了一个提示,我可以使用 zip/gzip 解压缩它,但我不知道我应该如何做到这一点。

问题是我在我的 ef 模型类中改变了一些东西,但是当我调用“add-migration”时,会生成一个空的迁移。我认为这是因为我的模型类的更改已经分配给现有的迁移:(

4

1 回答 1

2

(这可能是一个很好的起点 - 不适用于您的情况)

我认为您可能会发现这很有用-我认为您“只是”需要朝相反的方向解决(我只是在这里暗示可能的方向,您必须检查一下,测试自己)...

http://brice-lambson.blogspot.com/2012/05/using-entity-framework-code-first-with.html

它使用以下代码...

private byte[] GetModel(TContext context)
{
    using (var memoryStream = new MemoryStream())
    {
        using (var gzipStream = new GZipStream(
            memoryStream,
            CompressionMode.Compress))
        using (var xmlWriter = XmlWriter.Create(
            gzipStream,
            new XmlWriterSettings { Indent = true }))
        {
            EdmxWriter.WriteEdmx(context, xmlWriter);
        }

        return memoryStream.ToArray();
    }
}  

序列化模型。

然而,据我所知(如果我理解正确的话)你需要它在另一个方向......

快速搜索没有显示等效项reader- 您可以下载最新的EF6 代码- 或者还可以找到 EF5 代码(如果需要,我稍后会链接)。

读者:

实际上这可能更接近你想要的:

http://edmxdom.codeplex.com/
(我没有尝试过,但从 MS 链接)

http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/1546548f-9f90-4cc2-b1b2-28cf7e9d1cb5/

并检查有关使用的响应MetadataWorkspace

如果您需要有关该主题的更多信息,MetadataWorkspace我将发布我在该主题上发表的一些帖子。您可以获得大部分信息 - 您需要对EdmxWriter正在做的事情进行“反向”排序。

本质上,您正在寻找entity framework Edmx reader.

EdmxDOM:

我只是快速检查了一下——它似乎正在做你需要的 Edmx 格式管理。
这是一个“VB”项目——但你可以完成它

似乎有一个“读者”(再次,不确定,刚刚经历过这个,正如我对作者的了解 - 但从未与这部分工作过,方向)......

Public Sub LoadFile(ByVal fileName As String)  

在里面Edmx.vb

于 2013-04-10T14:46:01.710 回答