如何使用额外的 DBContext?
How Do I Use an Additional DBContext?
我有一个连接到 SQL 服务器的现有 ABP 1.0.0 项目。现在我正在尝试扩展此应用程序以从 Teradata 获取更多数据。我创建了一个新的 EF 项目并引用了 Teradata.Client.Provider
而不是 EntityFramework.SqlServer
.
在新项目中,我有一个新的 TdContext
class,它具有两个所需的 DbSet Teradata 实体,一个将实体映射到 schema/table 的模型构建器和通常的 public 构造函数,我在其中指定连接字符串。我不确定 providerName 所以我猜 "Teradata.Client.Provider".
当我调用试图注入 IRepository<ATerraDataTable>
的应用服务时,ABP 抛出通用错误发生。
我不确定是什么问题。除了 providerName 之外,我无法在 ABP 的任何地方找到我告诉它实例化 Teradata 客户端的地方。此外,我不记得 IRepository<TEntity>
是如何知道要使用哪个 DbContext 的。
我注入的 IRepository<ASqlDataTable>
工作正常。当我 3 年前写这个解决方案时,我只有一个 DBContext 到 SQL 服务器,我没有想太多去问一个存储库如何知道要使用什么连接。 ABP 文档推断 UOW 会这样做,但他们没有为我提供足够的细节。
.NET Provider for Teradata 参考:
https://downloads.teradata.com/doc/connectivity/tdnetdp/14.11/webhelp/DevelopingNetDataProviderforTeradataApplications.html
Abp 1.0.0 太旧了,所以我不确定我的回答是否正确。但是这里是。
Abp 使用模块系统。
如果您查看您的前端应用程序(如果是 mvc),您会发现这个 class。
appnameWebMvcModule.cs 在文件夹 startup.
在那 class 中,您会发现以下行 [DependsOn(typeof(xxxx))] 其中 xxx 是另一个项目。
您可以沿着这条链直到到达 appnameEntityFrameworkModule.cs
其中有以下行。
Configuration.Modules.AbpEfCore().AddDbContext....
如果您的第二个 dbcontext 正在引用具有完整其他结构的其他数据库,我将创建一个单独的应用程序并实施 api。
然后让您当前的应用程序实现 api。
这样你就不会破坏任何应用程序并且具有更容易的可扩展性。
我有一个连接到 SQL 服务器的现有 ABP 1.0.0 项目。现在我正在尝试扩展此应用程序以从 Teradata 获取更多数据。我创建了一个新的 EF 项目并引用了 Teradata.Client.Provider
而不是 EntityFramework.SqlServer
.
在新项目中,我有一个新的 TdContext
class,它具有两个所需的 DbSet Teradata 实体,一个将实体映射到 schema/table 的模型构建器和通常的 public 构造函数,我在其中指定连接字符串。我不确定 providerName 所以我猜 "Teradata.Client.Provider".
当我调用试图注入 IRepository<ATerraDataTable>
的应用服务时,ABP 抛出通用错误发生。
我不确定是什么问题。除了 providerName 之外,我无法在 ABP 的任何地方找到我告诉它实例化 Teradata 客户端的地方。此外,我不记得 IRepository<TEntity>
是如何知道要使用哪个 DbContext 的。
我注入的 IRepository<ASqlDataTable>
工作正常。当我 3 年前写这个解决方案时,我只有一个 DBContext 到 SQL 服务器,我没有想太多去问一个存储库如何知道要使用什么连接。 ABP 文档推断 UOW 会这样做,但他们没有为我提供足够的细节。
.NET Provider for Teradata 参考: https://downloads.teradata.com/doc/connectivity/tdnetdp/14.11/webhelp/DevelopingNetDataProviderforTeradataApplications.html
Abp 1.0.0 太旧了,所以我不确定我的回答是否正确。但是这里是。
Abp 使用模块系统。
如果您查看您的前端应用程序(如果是 mvc),您会发现这个 class。 appnameWebMvcModule.cs 在文件夹 startup.
在那 class 中,您会发现以下行 [DependsOn(typeof(xxxx))] 其中 xxx 是另一个项目。 您可以沿着这条链直到到达 appnameEntityFrameworkModule.cs 其中有以下行。
Configuration.Modules.AbpEfCore().AddDbContext....
如果您的第二个 dbcontext 正在引用具有完整其他结构的其他数据库,我将创建一个单独的应用程序并实施 api。 然后让您当前的应用程序实现 api。 这样你就不会破坏任何应用程序并且具有更容易的可扩展性。