【发布时间】:2012-12-05 13:54:10
【问题描述】:
我正在使用带有 Code First 的 Entity Framework 5。我编写了一个自定义的IDbConnectionFactory,我想将它用于我的DbContext 类建立的所有连接,所以在应用程序生命周期的早期,在完成任何数据库工作之前,我调用
Database.DefaultConnectionFactory = new MyConnectionFactory();
但是,MyConnectionFactory.CreateConnection 从未被调用,这向我表明 EF 已将其改回 - 但调试器显示在运行了几个查询后它仍然是 MyConnectionFactory。由于某种原因,它只是不使用它。
我的DbContext 是通过传递 app.config 文件中的连接字符串的名称来初始化的,并且这些连接字符串确实指定了一个显式提供程序(实际上它们必须这样做),所以我想知道这是否会导致 per -基于连接字符串的连接工厂的连接覆盖。这种情况会发生吗?我可以在不注册全新的提供商的情况下停止它(尽管这可能不太难做到?)。
无论我在网上看到什么(在各种 app.config 示例中被 defaultConnectionFactory 标记所掩盖)都表明您可以将其更改为您选择的 IDbConnectionFactory 实例,它会起作用,但我的行为不正常.
这样做的目的是让我在打开新连接时运行一组特定的 SQL 语句,所以这个问题的第二部分是有人知道更好的方法吗?
【问题讨论】:
标签: entity-framework ef-code-first entity-framework-5