首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF Code-first:如何缓存DbCompiledModel?

EF Code-first:如何缓存DbCompiledModel?
EN

Stack Overflow用户
提问于 2011-03-28 02:37:15
回答 2查看 6.8K关注 0票数 3

我已经为EF 4.1 RC设置了一个简单的测试项目,使用代码优先的方法。我所看到的是,每次调用新的MyContext()都要花费相当长的时间。我发现,有一个构造函数接受DbCompiledModel,描述http://msdn.microsoft.com/en-us/library/system.data.entity.infrastructure.dbcompiledmodel(v=VS.103).aspx说,缓存这个对象是很好的,以获得更好的性能。但是我找不到如何从现有的上下文中获取DbCompiledModel。而且网上也没有样本。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-28 03:02:27

模型已缓存。您可以通过在OnModelCreating方法中放置断点来轻松地验证它。只有在您第一次创建上下文时才会命中它。如果要手动创建DbCompiledModel,则必须首先在上下文之外创建DbModelBuilder。使用它的Build方法,然后对生成的DbModel执行Compile

票数 9
EN

Stack Overflow用户

发布于 2011-03-28 02:58:48

这是我重新思考后的发现。您可以使用以下代码获得已编译模型的副本。

代码语言:javascript
复制
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        var model = modelBuilder.Build(Database.Connection);
        var compliedModel = model.Compile();
    }

但是,当我将该模型传递到我的上下文中并进行了一些性能测试,并将它们与对新的MyContext()的普通调用进行比较时。我发现,该上下文已经缓存了编译后的模型,因为时间是相同的。因此,编译模型的缓存似乎只在手工制作时才需要。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5451391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档