c# - 防止 Entity Framework 5 查询 Information_Schema_Tables

标签 c# entity-framework entity-framework-5

在 EF 4.1 中,您过去常常删除 IncludeMetadataConvention 以防止 EF 在每次查询时查询数据库元数据。

在 EF 5 中,我收到有关 IncludeMetadataConvention 已过时的警告,而在 LinqPad 中,我可以看到 EF 现在正在查询每次使用时的迁移历史记录。我正在处理数据库优先项目(但使用 POCO 和 DbContext)。我不想要这些额外查询的开销。如何关闭它们?

更新 我发现我可以通过调用在每个 dbContext 的基础上禁用它

System.Data.Entity.Database.SetInitializer<theDbContext>(null);

但是,我希望能够在全局范围内禁用初始化(想象一个大型应用程序,我们希望确保在部署用于生产时我们不会运行这些查询(并且绝对不会尝试创建数据库)。

最佳答案

如果您需要为大型应用程序中的每个上下文类型执行此操作,您可以创建一些代码来遍历所有程序集,找到从 DbContext 派生的所有类型并通过反射调用该调用对于每个找到的类型。

顺便说一句。从 EF 4.3 开始,您还可以 change initializer from configuration但它仍然是基于上下文的,因为人们通常不会有多个。

关于c# - 防止 Entity Framework 5 查询 Information_Schema_Tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15230367/

相关文章:

c# - Entity Framework 代码优先 : How to attach an entity and modify collection type property?

c# - 如何在 EntityFramework 5 中使用 Transaction?

c# - 通过反射访问/执行通用方法?

c# - 使用字符串而不是枚举?

c# - 在 C3 中检测全局键盘钩子(Hook)

c# - 如何从 SQL Server 表中转换 TinyInt 值?

entity-framework - 如何从 Entity Framework 4.3 升级到 EF 5

c# - IQueryable for entities .Where(属性在本地数组中)

c# - Entity Framework 可以查询数据但不能保存

c# - 请求的服务尚未注册! AutoFac 依赖注入(inject)