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' 无效类没有加入数据库上下文也被数据迁移生成表