Breeze Js为自定义EF ADO .Net提供程序生成元数据

时间:2014-09-09 20:08:07

标签: c# asp.net sql-server entity-framework breeze

我们正在使用自定义实体框架ADO .Net提供程序(数据访问层是应用程序和FireBird之间的中间层)。 EF与此类提供商合作良好。我们还使用连接到EFContextProvider的Breeze服务。 问题是 - 当我尝试使用类似的东西时:

var contextProvider = new EFContextProvider<CompanyContext>();
return contextProvider.Metadata();

首先我得到了例外:

The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

好的,除了我的自定义提供程序外,我还添加了对web.config的SqlServer提供程序引用:

 <entityFramework>
    <providers>
      <provider invariantName="MyDataProvider" type="MyDataProvider.MyProviderServices, MyDataProvider"/>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>   
</entityFramework>

现在我又收到了另一个错误:

Additional information: CREATE DATABASE permission denied in database 'master'.

看起来像Breeze在里面使用SqlServer提供程序。无论如何使用EFContextProvider.Metadata与自定义ADO .Net提供程序?

1 个答案:

答案 0 :(得分:1)

哦,我自己很快就找到了答案。在默认的CompanyContext构造函数中,应添加以下行:

Database.SetInitializer<CompanyContext>(null);

多数民众赞成! Breeze完美且非常快速地从DbSet生成元数据。