2

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

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

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

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

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

  1. MSDN 博客
  2. MSDN 上的实体框架论坛

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

4

1 回答 1

3

实际上,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 中隐藏)。

于 2013-01-22T06:55:56.537 回答