我最近向数据库添加了 7 个视图。当我去可能包含该数据库的数据模型的项目并使用逆向工程师代码优先(在 EF 4.3.1 中)时,不会生成几个视图。
起初,我认为存在某种顺序问题,其中一些依赖于其他视图的视图以某种方式出现故障,可能会影响流程。我重命名了我的视图,以便在 SQL Server Management Studio 中它们按字母顺序出现,以便它们需要。
这似乎没有帮助。
生成的 5 个视图确实是需要存在的前 5 个视图。但是,最后的 2 个视图是未生成的视图。
除前 3 个视图外,所有视图都包含其他视图的连接,因此我认为连接不会成为问题。
但是,看起来好像两个缺失的视图都包含聚合(SUM 和适当的 GROUP BY 函数),而前 5 个没有。
我已经进行了一些搜索,但我没有看到任何地方对逆向工程师代码优先的聚合函数有限制。这个问题有解决方法吗?
更新:
我做了一个新项目,没有使用我自己复杂的现有数据库,而是尝试使用 Adventureworks。当我对其进行逆向工程时,EF 确实对带有聚合的视图进行了正确建模。
当我查看此视图 (Sales.vSalesPersonSalesByFiscalYears) 时,我注意到所有聚合都是使用数据透视完成的。因此,我随后重写了使用聚合来使用枢轴的视图。他们仍然没有被进口。