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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多个数据库提供者的一个实体框架模型相关的知识,希望对你有一定的参考价值。

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

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

答案

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

如何生成可与许多提供程序一起使用的模型。

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

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

用最少的词来说,AdaptiveClient允许您将连接字符串键入应用程序中特定于提供程序的特定于传输的组件。

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

您需要做的就是使用您定义的密钥注册提供者/传输特定组件。 AdaptiveClient提供了一个注册助手,使其成为一个非常简单的过程,因为它提供了特定于Entity Framework组件的方法。

  • 使用SOLID设计原则构建服务层
  • 创建可伸缩且松散耦合的服务层
  • 创建细粒度且可测试的服务
  • 创建特定于提供程序的迁移
  • 创建特定于提供程序的数据库初始化
  • 轻松删除并重新创建数据库以进行集成测试
  • 轻松注入一个客户端,提供对整个服务层的访问
  • 使用服务清单(facade)从任何其他服务中调用任何服务

下载完整的Zamagon Demo工作。该演示演示了迁移,数据库初始化程序,集成测试的删除和重新创建方案以及上面列表中的每个项目符号点。

AdaptiveClient is available as a nuget package

AdaptiveClient.EntityFrameworkCore is also available as a nuget package

以上是关于多个数据库提供者的一个实体框架模型的主要内容,如果未能解决你的问题,请参考以下文章

添加新实体标量时实体框架 4 映射片段错误

实体框架代码优先建模问题

实体框架在运行时创建多个表 C#

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

实体框架 - 代码优先:使用相同类型的多个子/可选属性进行映射

PHP中的代码优先实体框架模型