C# 如何加载实体框架预编译视图

C# 如何加载实体框架预编译视图,c#,.net,entity-framework,query-optimization,C#,.net,Entity Framework,Query Optimization,我发现,通过使用EdmGen.exe工具预编译视图,可以提高应用程序的性能 这一切都很好,但我和我的大学都无法确定生成的.cs文件是如何被项目实际使用的。 似乎没有任何对在任何地方生成的类的引用,那么它是如何被包含的呢 谁能解释一下这一点,因为不知道它是如何工作的真的很令人沮丧 编辑 我们已经确定,用于标记预编译视图的类类型,但是这必须意味着它通过反射加载。 如果是这种情况,是否有任何方法可以明确地将预编译的视图类用于特定视图的代码中?您可以尝试更改生成的代码。因此返回了一个不同的视图。 但如果

我发现,通过使用EdmGen.exe工具预编译视图,可以提高应用程序的性能

这一切都很好,但我和我的大学都无法确定生成的.cs文件是如何被项目实际使用的。 似乎没有任何对在任何地方生成的类的引用,那么它是如何被包含的呢

谁能解释一下这一点,因为不知道它是如何工作的真的很令人沮丧

编辑 我们已经确定,用于标记预编译视图的类类型,但是这必须意味着它通过反射加载。
如果是这种情况,是否有任何方法可以明确地将预编译的视图类用于特定视图的代码中?

您可以尝试更改生成的代码。因此返回了一个不同的视图。 但如果您不返回视图,我预计EF将失败

其思想是,生成的类用于DBContext中的所有集合。事实上,如果视图与您进行哈希比较的上下文不匹配,您将得到一个运行时错误

乙二醇

但是对于给定的视图,可以返回不同的字符串 可能的副本。有同样的问题,但没有答案。
   /// <Summary>
    /// The constructor stores the views for the extents and also the hash values generated based on the metadata and mapping closure and views.
    /// </Summary>
    public ViewsForBaseEntitySets24F9763E92A9F77E970A08557E1855C7579989F684539A5FB429069F966B9B7B()
    {
        this.EdmEntityContainerName = "Ef6Ctx3";
        this.StoreEntityContainerName = "CodeFirstDatabase";
        this.HashOverMappingClosure = "d7686982aa7cffcf874313838914e93f78d4d7d6d345d19261ef5edc8b4e96dd";
        this.HashOverAllExtentViews = "7b8857ee3ee44d13b2479e43c54dbdfb6bc8914e222c7891afcfcd9a29b06b2f";
        this.ViewCount = 2;
    }
   /// <Summary>
    /// return view for CodeFirstDatabase.pocotest
    /// </Summary>
    private System.Collections.Generic.KeyValuePair<string, string> GetView0()
    {
        return new System.Collections.Generic.KeyValuePair<string, string>("CodeFirstDatabase.pocotest", @"
SELECT VALUE -- Constructing pocotest
    [CodeFirstDatabaseSchema.pocotest](T1.pocotest_Id, T1.pocotest_f1, T1.pocotest_f2, T1.pocotest_f2a, T1.pocotest_f3, T1.pocotest_f5, T1.pocotest_f6b)
FROM (
    SELECT 
        T.Id AS pocotest_Id, 
        T.f1 AS pocotest_f1, 
        T.f2 AS pocotest_f2, 
        T.f2a AS pocotest_f2a, 
        T.f3 AS pocotest_f3, 
        T.f5 AS pocotest_f5, 
        T.f6b AS pocotest_f6b, 
        True AS _from0
    FROM Ef6Ctx3.poco1s AS T
) AS T1");
    }