【问题标题】:Start-up Performance Issues with Entity Framework, SQL Server CE 4.0 and Code First实体框架、SQL Server CE 4.0 和 Code First 的启动性能问题
【发布时间】:2013-01-19 11:13:07
【问题描述】:

我在我的应用程序中使用实体框架 (EF) 5.0、代码优先方法和 SQL Server CE 4.0 数据库。但是,我在应用程序启动时面临一个主要的性能问题。

我在网上搜索了this的文章,其中解释了哪些操作会影响启动性能,其中之一是视图生成。因此,我研究了如何在编译时生成视图并在运行时将它们链接到 EF,而不是在运行时创建视图。我遇到了 Entity Framework Power Tools,它提供了一个命令来通过你的 DbContext 类生成视图。

我在编译时使用 Entity Framework Power Tools 生成了视图,如this 文章中所述。但是,当我使用 SQL Server CE 运行我的应用程序时,它总是会生成以下异常:

EntityContainer 'DatabaseContext' 的映射和元数​​据信息不再与用于创建预生成视图的信息匹配。

而相同的应用程序可以在 SQL Server 数据库中正常工作。因此,我进行了更多搜索,但没有找到解决此问题的方法。以下是人们报告类似性能问题的链接:

  1. MSDN Blogs
  2. Entity Framework forum on MSDN

我的问题是:“这个应用程序启动性能问题是否有解决方法或解决方案?”。我需要使用 SQL Server CE 而不是 SQL Server。

【问题讨论】:

  • 每次更改模型时都需要预先生成视图。
  • 这就是我正在做的 Pawel,问题是当我在更新模型后生成视图时,在第一次运行时它会引发视图已过时的异常,但是当我这样做时与 SQL Server 相同,它工作正常。
  • 是同一台机器还是在不同的机器上运行?
  • @Powel,我对这个问题进行了更多调查,发现当我使用Power Tools命令“查看实体数据模型XML”时,该工具生成的XML与生成的有点不同在运行时使用 EdmxWriter。
  • 以下是不同的语句: 在编译时: 在运行时:schemas.microsoft.com/ado/2009/11/edm/ssdl">

标签: entity-framework ef-code-first sql-server-ce database-performance ef-power-tools


【解决方案1】:

实际上 EF Power 工具正在使用默认提供程序 SqlClient 生成视图,但是我需要为 SqlServerCe.4.0 提供程序生成视图,我无法确定找出为什么每次生成的视图都会过时,最后我弄清楚了为什么它不起作用。

所以,我只是从我的上下文类中注释了 DbContext 构造函数,然后我运行了 EF Power Tools 的“生成视图”和“查看实体数据模型 XML”命令,然后 EF Power Tools 从 App.config 否则它使用默认连接字符串,该字符串以 SqlClient 作为提供程序连接到 Sql Server。

所以,我相信如果有人使用任何其他提供程序,例如 Devart 的 Oracle 提供程序等,那么他/她需要通过在 App.config(用于桌面应用程序)或 Web 中指定连接字符串和提供程序信息来生成视图。 config(用于 Web 应用程序)并注释掉 DbContext 构造函数(或使用每个处理器将其隐藏在 EF Power Tools 中)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多