在 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/