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

标签 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”。

最佳答案

由于 csdl、ssdl 和 msl 文件作为资源嵌入到程序集中,因此可以使用 Assembly.GetManifestResourceNames Method

关于c# - 如何从具有 EF 模型的程序集中获取 csdl、ssdl 和 msl 规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15688416/

相关文章:

c# - 在 WPF RadChart 中禁用点标记和项目标签

entity-framework - Entity Framework 和更新级联

c# - 私有(private)嵌套静态类 - 好的还是坏的做法?

.net - c# .net core 2.1 系统环境变量控制台应用程序未加载

c# - azure 函数将多个文件上传到 blob 存储

entity-framework - DbContext 和 EF Code First 的更改跟踪差异

c# - 如何使用 Entity Framework 获取表中的最新行(考虑性能)?

c# - 如何检查C#字符串数组是否包含值

c# - GetExecutingAssembly 和 GetTypes 正在检索带有 "+<>c"后缀的额外类型,该类型显然不存在

c# - 增加移动速度