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

c# – 如何加载实体框架预编译视图,第1张

概述我发现通过使用EdmGen.exe工具预编译我的视图,我可以提高应用程序的性能. 这一切都很好,但我或我的大学都无法确定项目实际使用生成的.cs文件的方式. 似乎没有任何关于在任何地方生成的类的引用,所以如何包含它? 任何人都可以对此有所了解,因为它真的很令人沮丧,不知道它是如何工作的! 编辑 我们已经确认EntityViewGenerationAttribute用于标记预编译视图的类类型,但这必 我发现通过使用EdmGen.exe工具预编译我的视图,我可以提高应用程序的性能.

这一切都很好,但我或我的大学都无法确定项目实际使用生成的.cs文件的方式.
似乎没有任何关于在任何地方生成的类的引用,所以如何包含它?

任何人都可以对此有所了解,因为它真的很令人沮丧,不知道它是如何工作的!

编辑

我们已经确认EntityViewGenerationAttribute用于标记预编译视图的类类型,但这必须意味着它通过反射加载.
如果是这种情况,有没有办法明确地将它放在代码中,预编译的视图类应该用于某个视图?

解决方法 您可以尝试更改生成的代码.这样就返回了一个不同的视图.
但是如果你不返回视图,我希望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");    }
总结

以上是内存溢出为你收集整理的c# – 如何加载实体框架预编译视图全部内容,希望文章能够帮你解决c# – 如何加载实体框架预编译视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1228974.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存