如何从具有EF模型的程序集中获取csdl,ssdl和msl规范

时间:2013-03-28 17:31:31

标签: c# .net entity-framework reflection

我想从汇编中获得具有EF模型的csdl,ssdl和msl规范。

使用反射:

//loading assembly
var assem = Assembly.LoadFile(assemblyWithEF.dll);
//get model
var model = assem.GetExportedTypes().Where(t => t.BaseType.Name == ObjectContext").First();

//get specification
var csdlStream = assem.GetManifestResourceStream("Model1.csdl");
var mslStream = assem.GetManifestResourceStream("Model1.msl");
var ssdlStream = assem.GetManifestResourceStream("Model1.ssdl");

var csdl = XElement.Load(csdlStream);
var msl = XElement.Load(mslStream);
var ssdl = XElement.Load(ssdlStream)

问题是,如何以编程方式获取获取这些规范所需的EDMX文件的名称。在这种情况下,“Model1”。

1 个答案:

答案 0 :(得分:1)

由于csdl,ssdl和msl文件作为资源嵌入到程序集中,因此可以使用它们的名称来访问它们 Assembly.GetManifestResourceNames Method