Breeze Js为自定义EF ADO.Net提供程序生成元数据
本文关键字:程序生成 元数据 Net ADO Js 自定义 EF Breeze | 更新日期: 2023-09-27 18:21:11
我们使用自定义实体框架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提供程序一起使用?
哦,我自己很快就找到了答案。在默认的CompanyContext构造函数中,应添加以下行:
Database.SetInitializer<CompanyContext>(null);
就是这样!Breeze从DbSet中完美而快速地生成元数据。