标题真的说明了一切。我发现了几个不同方式的博客(将 EF 模型序列化为 XML,然后再次反序列化为 IEdmModel 是一种),但它们都基于旧版本的 OData 包。
问问题
4731 次
2 回答
5
序列化是唯一的方法。
几个月前,我曾为此大吵大闹。AFAIK 从那以后什么都没有改变,我个人不希望他们改变太多。简而言之,截至 2012 年 9 月,没有计划在 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
于 2013-11-07T16:36:29.997 回答
5
如果您的 DbContext 是从数据库优先的方法构建的,则给定的答案将失败,并给出此错误:
不支持从使用 Database First 或 Model First 创建的 DbContext 创建 DbModelBuilder 或编写 EDMX。EDMX 只能从不使用现有 DbCompiledModel 创建的 Code First DbContext 中获取。
经过一段时间的处理,我找到了合适的解决方案。基本上,您从包含相关 DbContext 的程序集中获取 CSDL 资源,并使用Microsoft.Data.Edm.Csdl.CsdlReader.TryParse方法对其进行解析。生成的 IEdmModel 是有效的,其中包含构建模型时 EntityFramework 给出的确切信息。
有关用法的示例,请参见此处
于 2014-01-28T19:31:34.820 回答