Vla*_*lov 3 .net entity-framework ef-code-first entity-framework-4.1
我使用Code-First aproach为EF 4.1 RC设置了一个简单的测试项目.我所看到的,每次调用新的MyContext()都需要相当长的时间.我发现,有一个构造函数接受DbCompiledModel和描述http://msdn.microsoft.com/en-us/library/system.data.entity.infrastructure.dbcompiledmodel(v=VS.103).aspx说,为了更好的性能,缓存此对象是一件好事.但我无法找到如何从现有上下文中获取DbCompiledModel.并且网上没有样品.
模型已经缓存.您可以通过在您的OnModelCreating方法中添加breakpoing来轻松验证它.它只会在您第一次创建上下文时被点击.如果要DbCompiledModel手动创建,则必须首先DbModelBuilder在上下文之外创建.使用它的Build方法,然后Compile产生DbModel.
这是我重新思考后发现的.您可以使用以下代码获得已编译模型的副本.
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
var model = modelBuilder.Build(Database.Connection);
var compliedModel = model.Compile();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我将该模型传递给我的上下文并进行一些性能测试时,将它们与对新MyContext()的简单调用进行比较.我发现,由于时间相同,因此上下文已经缓存了已编译的模型.因此,编译模型的缓存似乎只需要手工制作.
| 归档时间: |
|
| 查看次数: |
6323 次 |
| 最近记录: |