EF 预生成视图和多个上下文

Posted

技术标签:

【中文标题】EF 预生成视图和多个上下文【英文标题】:EF Pre-generated views and multiple Contexts 【发布时间】:2013-05-15 13:01:50 【问题描述】:

在我们的环境中,我们有超过 200 个表,并且我们使用 EF 5.0 Code First 来管理数据库。我们的软件允许用户修改实体并向它们添加自定义字段。

在 200 个中,超过 100 个是固定且不可自定义的系统实体。

应用的初始加载时间多2分钟!!!

我们认为,如果我们能够以某种方式为固定实体使用 EF 预先生成的视图,我们可以延长初始预热时间。

问题是,在什么条件下 EF 允许我们为项目中的多个实体预先生成视图?

【问题讨论】:

【参考方案1】:

如果您参考上下文菜单选项

是的,视图是每个上下文的

那么生成的文件就是有问题的上下文。 检查生成视图的来源。您将看到构造函数按名称引用上下文。 它还使用上下文哈希检查视图和上下文是否仍然匹配。

/// </Summary>
    public ViewsForBaseEntitySetsCC0A5F35D57704F5E501B804CB5CFFC8DCAD8C8E1AFC199B8C68FCD54D47FF7A()
    
        this.EdmEntityContainerName = "THE DB CONTEXT NAME";
        this.StoreEntityContainerName = "CodeFirstDatabase";
        this.HashOverMappingClosure = "c7c56b72d1e7053b77daa9e4fb813dbb5ad00ae0a084f07f58399324dd70e906";
        this.HashOverAllExtentViews = "5fae06be83f62e86b71260bebb0e53a51d8b533588febbefbdcbaf628e514062";
        this.ViewCount = 62;
    

编辑:为什么是最佳实践信息

见Julie Lerman article on MSDN on bounded contexts

【讨论】:

感谢您的回复,所以如果将一些实体放在单独的上下文中。我们应该能够为这些模型生成视图。如果这个模型在上下文 A 和上下文 B 之间有外键怎么办?两个上下文也可以在同一个 DLL 中吗? 那么您无法在较小的上下文中对该约束进行建模。但是数据库仍然会强制执行它。我使用一个大上下文来创建数据库和几个小的访问。显然,如果您希望在点击 DB 之前进行上下文检查,那么较小的上下文需要逻辑组。 另一个问题是可以将相同的实体添加到两个 Context 类中吗?在某些情况下,我们需要预先加载和连接。 绝对,这就是整个想法。见编辑

以上是关于EF 预生成视图和多个上下文的主要内容,如果未能解决你的问题,请参考以下文章

笔记:EF出现列名 'Discriminator' 无效类没有加入数据库上下文也被数据迁移生成表

EF4.1 - 在单独的构建服务器上使用 TFS 团队构建的预生成视图是不是存在问题?

如何使用EF?

论文泛读115多样化的预训练上下文编码改进了文档翻译

LINQ 和 EF6:创建模型时无法使用上下文

EF生成实体模板改良