Created
January 14, 2015 16:48
-
-
Save mrichman/c185b79e305e29612559 to your computer and use it in GitHub Desktop.
EDMX Decoder - Entity Framework 6 Serialized Model Data
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.IO; | |
using System.IO.Compression; | |
using System.Text; | |
namespace EdmxDecoder | |
{ | |
internal class Program | |
{ | |
private static void Main(string[] args) | |
{ | |
/** Convert serialized model data to base64: | |
declare @binaryContent varbinary(max); | |
select @binaryContent = Model | |
from [dbo].[__MigrationHistory] | |
where migrationId = '201501091331319_Initial' | |
select cast('' as xml).value('xs:base64Binary(sql:variable("@binaryContent"))', | |
'varchar(max)') as base64Content | |
*/ | |
string modelBase64 = | |
@"H4sIAAAAAAAEAN1ZS2/bOBC+L7D/QdBxgVqx20M3sFukeSyCrZMgSnstaGnsEEuRWpIy7N+2h/1J+xd2qJcp0rKdJ4JegojkfPMeztD//fPv+PMqY8ESpKKCT8Lh4CgMgCcipXwxCQs9f/cx/Pzp11/G52m2Cr43596bc0jJ1SS81zo/jiKV3ENG1CCjiRRKzPUgEVlEUhGNjo5+j4bDCBAiRKwgGN8WXNMMyg/8PBU8gVwXhE1FCkzV67gTl6jBFclA5SSBSThdJid5zmhCNIoyHFQUg7MZgmhY6TA4YZSgXDGweRjkH46/KYi1FHwR50hD2N06B9yfE6ag1uI4/3CoIkcjo0hEOBe6FOFRhghbFVHJczSGXhuxSkUnIUos7RN45k9YdxZw6UaKHKRe38K8prtMwyDq0kUuYUtm0RjW+B/X70dhcFUwRmYMWguhCWMtJPwBHCTRkN4QrUFyQwul6B5Xh4f523BBV2BshcEFXUH6FfhC37ecpmTVrAyPMMK+cYqhiERaFrBFst1czzNC2bOyrb4drldkSRdlJDj8T9JUglKgwuAWWHlC3dO8isyB8fEP68iFFNmtYLX3Nzs/YlHIxJhPbN2+I3IBuivVONqE1M5Aq2F+plgz5tnPZzdGbZavlMPw9ePW4j56+fB1mN8IpQ31gxk/W9qUxe9JGdOkRE/GNAl1SMacKCUSWkpiiWdJ0VXqnKfB7iSujNqogzYsmKbmOkPmaEbPTL2IrZIbxCabHdDfPFDMYpAmnQjDW1NpSSjXfspTntCcsJ0aOVQHlgpj8Bbf3TmDHLjJ9p2KH8K4qQU+85aHU8H2WWYcWRHhl1bTgyAFyFqA6XrTl7h+Nedj0Jao6LlNFHaixAuKLrGVFB5AGxQOhqVHVwo7xaxD25PQNezeBGhFb1X2nLM35C0MS1b3MuoquCXXW2dt2s2o6jebvjTqaUzHU5LnWBatRrVeCeKqSz19Fz+8L8wqjChRW9rDVtqWE96TZAHOLrJGSS+oVPqMaDIjplCfppl37IDQbDjZEeo7q4m35rT5v47+Pa36wO9zbVteoHqZKQNlR+AEjk9WTguEEbml6TgVrMh4fzXqp65aV5u+WjkcoW5DbYh6yccYR47uXuHy7O1Eveu8g1y7K5+f4N6t3eVBHu6lfBknN/eEjdB3d/SjdLtGG6u78yjEUS/i6CGIm/bORtusvnJIeqXYPdJyb0uyU3rHdRnc/3Dg1cXqSBigiZY0NTUxXisN2cAcGMR/s1NGUd/NgSnhdA5K34m/AO9DLNsfndeGR7wEREql7C0+B1Cj+t5h7IGzjf0SwJdEJvdE+hPMUwb9Q1D9geTtT8wv4o7usFyyeIZR+dkcu20Sfpx/9w+6PbiPC5snjY1PmhLbdv9V58LXGAP7u4k3OPj5Tfj+8a93+qsuqkmYzgT6tYrFrcNT32C4ayzcBt4/Vb3G1OgNiTtnREfFTvv4IjOh33Bg9Fi/Z2DgKrrYQJhfNzgknbhpz1zyuWjC15GoOeLUrSlokmJQnUhN5yTRuJ2gruUj3XfCivI+nEF6ya8LnRcaVYZsxjrvpiYNdvEvB9+uzOPrvHyOew4VUEyKKsA1/1JQlrZyX/h3Qh+Eya/6HjS+1OY+XKxbpCvBDwSqzdeWhTvIcoZg6prHZAn9su23Yddi4zNKFpJkqsbY0OMnhl+arT79D98O2NmRGwAA"; | |
byte[] bytes = Convert.FromBase64String(modelBase64); | |
byte[] uncompressed = Decompress(bytes); | |
string edmx = Encoding.UTF8.GetString(uncompressed); | |
File.WriteAllText(@"c:\edmx.xml", edmx); | |
} | |
private static byte[] Decompress(byte[] gzip) | |
{ | |
using (var stream = new GZipStream(new MemoryStream(gzip), CompressionMode.Decompress)) | |
{ | |
const int size = 4096; | |
var buffer = new byte[size]; | |
using (var memory = new MemoryStream()) | |
{ | |
int count = 0; | |
do | |
{ | |
count = stream.Read(buffer, 0, size); | |
if (count > 0) | |
{ | |
memory.Write(buffer, 0, count); | |
} | |
} while (count > 0); | |
return memory.ToArray(); | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment