急需帮助。
我首先使用实体框架代码,并尝试遵循 Julie Lerman 关于从域类中分离上下文的建议,但我无法让实体框架识别编译后的视图。我已经尝试了很多东西,但到目前为止最好的是我可以调用编译视图的构造函数,但第一次查询仍然需要大约 15 分钟(大约 329 个实体和 600 多个视图创建)。这让我认为它仍然必须在第一个查询中创建视图。
脚步
使用现有数据库和“模型项目”,我运行 Entity Power Tools Beta 3 以“逆向工程师代码优先”数据库。这创建了上下文、域类和映射(流利的)类。仅供参考,我这样做是因为我稍微修改了 T4 模板以匹配我们的编码标准。
使用 Julie Lerman 从她的 Plural Site 培训视频中的建议,我将域类、上下文和映射类分解为 3 个独立的项目(上下文、域类、映射)。我将模型项目中的文件分别复制到这3个项目中,然后将命名空间更改为与项目名称和位置相对应。4 个项目的结果和命名空间:“MyCompany.DataContext”、“MyCompany.DomainClasses”、“MyCompany.DomainMappings”、“MyCompany.Model”。
使用“模型项目”和从 Entity Power Tools 生成的代码,我选择了创建的上下文文件并按下鼠标右键以显示上下文菜单,从而可以选择“生成视图”。当我这样做时,它会给我一个错误“序列不包含匹配元素”。(问题 #1)
好的,所以这不起作用,所以我将“Pawel Kadluczka”的 T4 模板添加到“MyCompany.DataContext”项目以生成视图并运行该自定义工具并成功,创建视图时没有错误。但是,当我运行测试应用程序进行基本查询时,第一个查询需要 15 分钟,并且生成的视图的构造函数“ViewsForBaseEntitySets1B04A...0F8A()”不会被调用。
好的,所以这也不起作用,所以我将 T4 模板创建的“视图”文件添加到“MyCompany.DomainClasses”项目中,这样它将与类一起编译并再次运行测试应用程序。这一次,第一个查询仍然需要 15 分钟,但在启动构造函数“ViewsForBaseEntitySets1B04A...0F8A()”后大约 20 秒内被调用。这是进步,但没有香蕉。这使我认为视图必须与域类而不是上下文位于同一程序集中。 问题:这是一个正确的假设吗? 此外,由于它仍然需要 15 分钟,就像 Entity Framework 看到了视图但不喜欢它们,所以它再次重新创建它们。 可能的?
怎么办?我不知所措,一直在用头撞墙。如何创建具有多个上下文的预编译视图?观点去哪儿了?是否有我不遵循的命名空间规则?当我有 2 个或更多上下文时会发生什么?
请帮忙。公元前