【问题标题】:Entity Framework connection metadata extraction实体框架连接元数据提取
【发布时间】:2009-08-20 08:03:08
【问题描述】:

我正在使用 EntityFramework POCO 适配器,并且由于 microsoft 对元数据的访问权限存在限制,因此我手动从 xml 中提取我需要的信息。唯一的问题是我想加载 ssdl、msl、csdl 文件名,而不必直接检查 app.config 中的连接字符串节点。 简而言之,我可以在 ObjectContext/EntityConnection 的哪个位置访问这些文件名? 最坏的情况我需要从 EntityConnection 对象获取连接名称,然后从 app.config 加载它并解析字符串本身并自己提取文件名。 (但我显然不想这样做)。 谢谢

【问题讨论】:

  • +1 个有趣的问题!我想,很简单,那一定是没有问题的——但它似乎很好地隐藏在 EF 内部深处的某个地方......
  • 是的,我什至尝试使用反射器查看 system.data dll,但我似乎无法找到它在做什么。我现在最终选择了从 app.config 手动拉取。不过想要一个更清洁的解决方案。

标签: entity-framework configuration metadata poco


【解决方案1】:

我可以在这里想到两种使用反射的方法:

  1. 深入研究 EntityConnection。连接字符串应该作为私有变量存在于某处。

  2. 默认情况下,EDM 元数据文件作为资源嵌入到程序集中。您应该能够反映包含 EDM 的程序集并直接将文件拉出。在包含 EDM 的程序集中使用 Reflector,您应该会看到嵌入的 msl、ssdl、csdl。

我认为选项 2 总体上更稳健。

【讨论】:

    【解决方案2】:

    你看过ObjectContext.MetadataWorkspace吗?它不是最容易使用的库,但我能够获得所需的所有信息。

    Julia Lerman 在她的 EF book. 中有一篇关于这个主题的精彩章节

    【讨论】:

    • 是的,这是我看的第一个地方。那里似乎没有任何东西暴露在外。
    • 您想从无法从 MetadataWorkspace 中取出的原始 xml 文件中取出什么?
    猜你喜欢
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多