0

如何解压缩/读取存储在EF 4.3代码优先迁移__MigrationHistory表中的压缩模型?EF 4.3代码优先迁移 - 解压缩__MigrationHistory模型

我在this comment中发现了一个提示,我可以使用zip/gzip对它进行解压缩,但我不知道我应该怎么做。

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

+0

要小心,你不打电话从IDbContextFactory Database.SetInitializer(新MigrateDatabaseToLatestVersion),这将导致添加迁移产生空迁移。 – James 2013-04-10 10:17:35

+0

感谢您的提示,但我没有从IDbContextFactory调用它。 – Dennis 2013-04-10 10:23:05

回答

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 code - 或者也发现EF5 one(如果需要,我会在后面链接)。

读者:

其实这可能是更接近你想要什么:

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