多个数据库提供者的一个实体框架模型

Sal*_*mar 6 c# database entity-framework ado.net-entity-data-model

我以前使用Entity Framework为数据库生成模型.问题是Entity Framework为特定的提供者(SQL Server,Oracle等)生成模型.如何生成可与许多提供程序一起使用的模型.

我想过用这个DbProviderFactory类手工制作我自己的数据访问层.但是从头开始构建模型涉及很多工作,这就是为什么我想知道我是否可以生成一个与多个提供商一起工作的实体框架模型?!!!

小智 1

是的,您可以使用一个 DbContext 并定位多个数据库提供程序!

如何生成可与许多提供商合作的模型。

实体框架将为您生成特定于提供者的 SQL。您必须解决的真正问题是,当您必须自己进行特定于提供者的调用(即调用特定于提供者的存储过程等)时,如何告诉 EF 使用哪个提供者。您还必须处理特定于提供者的迁移问题、数据库初始化程序和特定于提供商的集成测试。

您可以使用AdaptiveClientAdaptiveClient.EntityFrameworkCore来应对上述所有挑战。

简而言之,AdaptiveClient 允许您将连接字符串键入到应用程序中特定于提供程序和特定于传输的组件。

当选择特定连接字符串(即 MSSQL 或 MySQL)时,AdaptiveClient 使用 Autofac 为您解析正确的组件。

您需要做的就是使用您定义的密钥注册您的提供商/传输特定组件。AdaptiveClient 提供了一个注册帮助程序,使该过程变得非常简单,因为它提供了特定于实体框架组件的方法。

  • 使用 SOLID 设计原则构建您的服务层
  • 创建可扩展且松散耦合的服务层
  • 创建细粒度且可测试的服务
  • 创建特定于提供商的迁移
  • 创建特定于提供者的数据库初始值设定项
  • 轻松删除并重新创建数据库以进行集成测试
  • 轻松注入可访问整个服务层的单个客户端
  • 使用服务清单(外观)从任何其他服务中调用任何服务

下载完整的Zamagon 演示版。该演示演示了迁移、数据库初始化程序、集成测试的删除和重新创建场景以及上面列表中的每个要点。

AdaptiveClient 可作为 nuget 包使用

AdaptiveClient.EntityFrameworkCore 也可以作为 nuget 包提供