标题说明了一切。我发现了几个不同方式的博客(将EF模型序列化为XML,然后再次反序列化为IEdmModel),但它们都基于旧版本的OData包。
答案 0 :(得分:5)
序列化是唯一的方法。
几个月前我已经ranted about this了。从那时起AFAIK没有任何改变,我个人并不认为它们会发生太大变化。简短的故事是as of September 2012,没有计划在EF中使用EdmLib,也没有在其他项目中使用EF的代码。我们应该与OData的EdmLib对齐多少?
Not worth adopting code Cost of implementing SSDL & MSL Freedom to evolve our API independently Look at aligning names of types and properties where appropriate
答案 1 :(得分:5)
如果您的DbContext是从数据库优先方法构建的,那么给定的答案将会失败,从而出现此错误:
不支持从使用Database First或Model First创建的DbContext创建DbModelBuilder或编写EDMX。 EDMX只能从不使用现有DbCompiledModel创建的Code First DbContext中获取。
经过一段时间搞乱这个,我找到了一个合适的解决方案。基本上,您从包含相关DbContext的程序集中获取CSDL资源,并使用 Microsoft.Data.Edm.Csdl.CsdlReader.TryParse 方法对其进行解析。生成的IEdmModel有效,包含构建模型时EntityFramework给出的确切信息。
点击此处查看example with usage