Skip to content

Instantly share code, notes, and snippets.

@bricelam
Created July 16, 2014 16:14
Show Gist options
  • Save bricelam/6cbf925d440674d260df to your computer and use it in GitHub Desktop.
Save bricelam/6cbf925d440674d260df to your computer and use it in GitHub Desktop.
Load an *.edmx file
MetadataWorkspace LoadEdmx(string path)
{
var runtime = XElement.Load(path).Elements().First(e => e.Name.LocalName == "Runtime");
EdmItemCollection edmCollection;
var csdl = runtime.Elements().First(e => e.Name.LocalName == "ConceptualModels")
.Elements().First(e => e.Name.LocalName == "Schema");
using (var reader = csdl.CreateReader())
{
edmCollection = new EdmItemCollection(new[] { reader });
}
StoreItemCollection storeCollection;
var ssdl = runtime.Elements().First(e => e.Name.LocalName == "StorageModels")
.Elements().First(e => e.Name.LocalName == "Schema");
using (var reader = ssdl.CreateReader())
{
storeCollection = new StoreItemCollection(new[] { reader });
}
StorageMappingItemCollection mappingCollection;
var msl = runtime.Elements().First(e => e.Name.LocalName == "Mappings")
.Elements().First(e => e.Name.LocalName == "Mapping");
using (var reader = msl.CreateReader())
{
mappingCollection = new StorageMappingItemCollection(
edmCollection,
storeCollection,
new[] { reader });
}
return new MetadataWorkspace(() => edmCollection, () => storeCollection, () => mappingCollection);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment