映射类的227个子类导致实体框架数据库上下文初始化缓慢?

时间:2014-08-24 06:19:45

标签: asp.net-mvc entity-framework orm

我有一个国家级,有227个子类型(每个国家一个)。 遗留限制使我无法轻易改变这一点。

我已经仔细检查过,实际上大量的子类型导致EF进行超慢速初始化,在第一次调用时,第一次访问DbContext需要大约2分钟!!

有没有什么方法可以在Entity框架中维护这么多的子类型并避免这种缓慢的旋转?

通过对Db.Users.Find(1)进行简单调用就可以发生挂起; (例如)

2 个答案:

答案 0 :(得分:2)

冷查询(对没有映射视图的实体的查询。这些模型是从实体到表的映射,使得EF之后如此高效:

  

根据规范计算这些视图的过程   映射就是我们所说的视图生成。视图生成也可以   在加载模型时或在构建时通过动态发生   使用"预先生成的视图&#34 ;;后者以...的形式序列化   实体SQL语句到C#或VB文件。

预生成视图是使用 VS 中的 EF 工具设计的在编译时而不是在运行时构建。

  

您还可以考虑使用Entity Framework Power Tools   右键单击,生成EDMX和Code First模型的视图   模型类文件并使用Entity Framework菜单进行选择   “生成视图”。实体框架Power Tools仅适用于   DbContext派生的上下文,可以在   http://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d

     

有关如何在Entity上使用预生成视图的更多信息   框架6访问http://msdn.microsoft.com/en-us/data/dn469601

检查此Reference on Entity Framework View Generation

您需要了解的有关预生成视图,应用视图,甚至将它们移动到自己的程序集的所有信息(以便View Generation构建独立于Application发布版本。

答案 1 :(得分:0)

创建Context的第一个实例时, EF验证DB Schema, 如果模型没有更改,您可以通过静态约束器跳过此步骤:

static ctor
{
Database.SetInitializer<BillingContext>(null);
}