我有一个国家级,有227个子类型(每个国家一个)。 遗留限制使我无法轻易改变这一点。
我已经仔细检查过,实际上大量的子类型导致EF进行超慢速初始化,在第一次调用时,第一次访问DbContext需要大约2分钟!!
有没有什么方法可以在Entity框架中维护这么多的子类型并避免这种缓慢的旋转?
通过对Db.Users.Find(1)进行简单调用就可以发生挂起; (例如)
答案 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。
您需要了解的有关预生成视图,应用视图,甚至将它们移动到自己的程序集的所有信息(以便View Generation构建独立于Application发布版本。
答案 1 :(得分:0)
创建Context的第一个实例时, EF验证DB Schema, 如果模型没有更改,您可以通过静态约束器跳过此步骤:
static ctor
{
Database.SetInitializer<BillingContext>(null);
}