EF4创建自定义DbFactoryProvider和其他Db *类

时间:2011-08-23 11:47:41

标签: entity-framework ado.net

我试图创建一组自定义类来创建我自己的实体框架与之通信的提供程序。我创建了自定义类,它继承自抽象类DbProviderFactory,刚开始测试是否可以让它与EF交谈,但我遇到了问题。

<configuration>
  <system.data>
    <DbProviderFactories>
      <add name="Custom Data Provider"
           invariant="CustomClient"
           description=".Net Framework Data Provider for Custom"
           type="CustomClient.CustomProviderFactory, CustomClient, 
           Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    </DbProviderFactories>
  </system.data>
  <connectionStrings>
    <add name="AdventureWorksEntities" 
     connectionString="metadata=...;
     provider=CustomClient;
     provider connection string=&quot;data source=.;
     initial catalog=AdventureWorks;integrated security=True;
     multipleactiveresultsets=True;App=EntityFramework&quot;"
     providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

使用上面定义的CustomClient,我认为它将顺利进入Entity goodness,但是当我的代码尝试创建一个新的AdventureWorksEntities对象时,我得到以下异常:

出现InvalidOperationException 请求的.Net Framework数据提供程序的实现没有System.Data.Common.DbProviderFactory派生类型的实例字段。

查看DbProviderFactory的可用替代,未提及 Instance 成员。我不确定为什么它需要这个字段,如果它不是DbProviderFactory的类/接口的一部分。修复是否像提供名为 Instance 的字段一样简单,该字段返回我的自定义类型的对象?

1 个答案:

答案 0 :(得分:6)