2

我在 Windows 8.1 机器上运行 VS Ultimate 2013,现在已经成功运行了几个月。但是,我今天刚刚为 Entity Framework Power Tools Beta 4 安装了 NuGet 包,但遇到了问题。安装 EFPT 后,我重新启动了 VS,加载了我的解决方案,将我的“数据”项目设为启动项目,右键单击从 DbContext -> 实体框架 -> 生成视图派生的类。Visual Studio 完全崩溃并重新启动。我尝试在 EFPT 上下文菜单中单击其他选项,例如“查看实体数据模型(只读)”,所有这些都会导致 VS 完全崩溃并重新启动。

我正在使用 Update 3 运行 VS,所以我安装了 Update 4,但仍然是同样的问题。如果在安全模式下运行 devenv.exe,它不会崩溃,但 EFPT 实际上也不会做任何事情。

所以现在,我使用 .NET Fx 4.5.51641 和 Entity Framework 6.1.2 运行 VS 版本 12.0.31101.00 Update 4。

最终,我正在尝试为我的代码优先 EF 上下文创建一个 EDM 映射文件,以缓存和减少启动时间。如果我遇到的这个问题是一个已知问题,是否有修复或解决方法来生成此映射???

4

1 回答 1

1

谢谢埃里克。我想回答我自己的问题,因为我能够更进一步。而不是编写(大量)代码来生成缓存视图,并且每次代码更改时都必须运行它。

微软 SignalR 团队的开发人员 Pawel Kadluczka 编写了一段不错且易于使用的代码,可以通过 NuGet 安装。“交互式预生成视图”项目添加到您的数据程序集后,将查找缓存视图,如果未找到,则即时生成它们。开箱即用,它支持文件和数据库缓存视图信息。

我必须添加的唯一代码是:

static DynamicDbContext()
    {
        InteractiveViews.SetViewCacheFactory(new DynamicDbContext(), new FileViewCacheFactory(_SCRIPT_DIRECTORY + "dbviews.xml"));
    }

从字面上看,我花了 5 分钟来安装、编写代码、执行和确认。

它需要在使用 dbcontext 执行任何查询之前运行,因此他建议将这段代码放置在自定义 dbContext 的静态 ctor 中。

Pawel 描述它的博客文章是:http ://blog.3d-logic.com/2013/12/14/using-pre-generated-views-without-having-to-pre-generate-views-ef6/

您可以通过 NuGet 安装或在 CodePlex 上阅读更多信息:https ://efinteractiveviews.codeplex.com/

于 2015-01-30T23:22:45.290 回答