entity-framework - Entity Framework Power Tools Beta 3 在尝试生成 View 时抛出异常 "sequence contains no matching element"

标签 entity-framework

正在努力为数据库创建 Entity Framework 预编译 View 并需要帮助。

在使用 Visual Studio 2010 时,我无法使用最新版本的 Entity Framework Power Tools Beta 3 生成预​​编译 View 。当我右键单击基于 dbContext 的文件并选择“生成 View ”选项时,它会弹出一个“序列不包含匹配元素”对话框错误框。

卸载电动工具扩展、重新启动 Visual Studio 和计算机都没有帮助。

问题 1:什么可能导致此错误。 Entity Framework Power Tools 在我让它工作之前一文不值?

所以到目前为止,我能够为此序列生成 View 的唯一方法是使用 T4 模板(来自 Internet),但它经常超时并且无法完成。该数据库有大约 350 个表,它创建的 View 数量约为 670 个 View 。但是,它大部分时间都无法创建 View ,我必须反复尝试,有时会关闭并重新启动以使其工作。在带有 SSD 和 8GB 内存的 i7 四核上,这段时间的 CPU 利用率约为 12%,所以很奇怪。但是,当生成 View (没有超时)时,它们工作正常。

问题 2:是否可以采取任何措施来防止此模板超时和失败?

现在无法放弃我已经考虑尝试其他方法,我能够通过创建数据库第一个项目并添加从现有数据库创建的 Entity Framework 数据模型来生成 View 。模型创建得很好,我能够按预期创建 View ,但是当放置在最终装配中时无法识别它们,并且实体尝试查询数据库。在装配中放置时,我将使用 T4 模板生成的 View 文件替换为 Power Tools 上下文菜单创建的文件。

命名空间是否导致了这个问题?

我认为它与命名空间有关,但我不知道它如何找出编译 View 的规则以及命名空间和 View 必须调用什么才能被找到和使用。从 DbContext 文件创建的 View 与使用同一数据库的 Edmx 模型创建的 View 位于不同的项目中。我有一个 DbContext 项目、一个模型项目、一个域类项目和域类映射项目。我将 View 文件放在与域类相同的程序集(项目)中。

这是生成的 View 输出的示例。左侧的一个是使用 T4 模板和“运行自定义工具”创建的,右侧的一个是使用 Entity Framework Power Tools Beta 3 创建的,当光标位于 EDMX 文件时,从上下文菜单中选择“创建 View ”。

工作一:

SELECT VALUE [xxx.yyy.Provider.DataContext.RouteStop](T1.RouteStop_RouteStopId, ...
FROM (
     SELECT   T1.RouteStopId as RouteStop_RouteStopId, .....
     FROM     CodeFirstDatabase.RouteStop AS T
     ) AS T1

不工作:
SELECT Value [xxx.yyy.Provider.DataModel.Store.RouteStop](T1.RouteStop_RouteStopId, ...
FROM (
     SELECT   T1.RouteStopId as RouteStop_RouteStopId, .....
     FROM     ZeeZorProviderEdmx.RouteStops AS T
     ) AS T1

如果有帮助,包含域类并包含生成 View 副本的项目的命名空间是“xxx.yyy.Provider.DomainClasses”。

问题 3:如何让 Power Tools 生成的 EDMX View 像从 T4 模板创建的其他 View 文件一样工作。

我一直在听这个,反正我没有多少剩下的所以我真的可以使用一些好的建议。我需要一个解决方案,我看到了 3 种方法之一:
  • 使用 Entity Framework Power Tools Beta 3 和“创建 View ”
    选择基于 DbContext 的对象文件时的上下文菜单选项。
  • 使用 T4 模板,只是笑着承担超时问题和
    构建 View 时不断失败。
  • 使用带有 EDMX 文件的模型项目并使用 Power Tools Beta 3
    “创建 View ”上下文菜单并解决命名空间或 View
    发现问题。

  • 请帮助我找出这 3 种方法之一并使其正常工作。

    谢谢,
    布莱克

    最佳答案

    好的 - 我刚刚在尝试从电动工具菜单查看 View 实体模型时遇到了这个问题。序列不包含任何元素。看起来工具 Beta 3 仍在构建中。原因显然是电动工具找不到连接字符串。无论如何,这是一个有效的临时解决方案。

    将新的类库项目添加到您的解决方案中。如果需要,您可以删除默认的 class1。现在,添加一个带有连接字符串元素的 App.config 文件。 (我只是从真正的 App.config 中复制了我的。然后,将此项目设置为 Startup 项目。现在,当您单击 View Entity Model as readonly 菜单项时,它将显示。

    我想这些家伙正在研究这个问题。 Julie Lerman 在上面提到的链接中写了一篇关于它的博客。

    希望这可以解决您的一些问题。

    关于entity-framework - Entity Framework Power Tools Beta 3 在尝试生成 View 时抛出异常 "sequence contains no matching element",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17752721/

    相关文章:

    database - 使用 Entity Framework 无法正确记录更改?

    c# - EntityFrameworkCore 映射关系

    c# - 手动更新 Entity Framework 中集合的修改状态

    entity-framework - EF Code First Detached Entity 不更新对象引用

    entity-framework - 在模块化应用程序中使用 Entity Framework

    c# - 如何使用 Entity Framework 在 XAF 中实现真正的 Master-Detail?

    c# - Entity Framework 中的 StoreGeneratedPattern

    asp.net-mvc - Windows Azure 上使用 Entity Framework 进行 Asp.net mvc 身份验证

    c# - 不在引用的程序集中键入 Foo,但我使用的是扩展类型 Foo 的类型 Bar

    database - 哪个 ORM 框架最能处理 MVCC 数据库设计?