一个Entity Framework模型适用于多个数据库提供程序

6

以前我曾使用过Entity Framework来生成数据库模型。但问题在于,Entity Framework只能为特定的提供程序(如SQL Server、Oracle等)生成模型。那么,我如何生成可以与多个提供程序一起使用的模型呢?

我考虑手工制作自己的数据访问层,使用DbProviderFactory类。但是从头开始构建模型需要大量的工作,这就是我想知道是否能够生成一个可与多个提供程序一起使用的Entity Framework模型的原因?!!!


你解决了这个问题吗?如果是,也许可以分享一下。 - Alexandra Damaschin
1
很不幸,我没有。因此,我选择编写自己的数据访问层(DAL),该层仅限于我当时包含的提供程序。 - Saleh Omar
你尝试过Stackoverflow Dapper及其扩展吗?Dapper是一个轻量级ORM,速度快且足够简单。 - ali
1个回答

1

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

我如何生成适用于多个提供程序的模型。

Entity Framework会为您生成特定于提供程序的SQL。您真正需要解决的问题是,在必须自己进行特定于提供程序的调用(例如调用特定于提供程序的存储过程等)时,如何告诉EF要使用哪个提供程序。您还必须处理特定于提供程序的迁移、数据库初始化器和特定于提供程序的集成测试问题。

您可以使用AdaptiveClientAdaptiveClient.EntityFrameworkCore解决上述所有挑战。

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

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

你只需要使用自定义的键注册提供程序/传输特定组件。AdaptiveClient提供了一个注册助手,使这个过程变得非常简单,因为它提供了针对Entity Framework组件的特定方法。
使用SOLID设计原则构建您的服务层 创建可扩展且松耦合的服务层 创建细粒度且可测试的服务 创建特定于提供程序的迁移 创建特定于提供程序的数据库初始化器 轻松地删除和重新创建您的数据库以进行集成测试 轻松地注入一个单一客户端,以访问整个服务层 使用服务清单(外观)从任何其他服务内调用任何服务
下载完整的工作Zamagon演示。演示演示了迁移、数据库初始化器、删除和重新创建集成测试的场景以及上述列表中的每个要点。 AdaptiveClient作为nuget包可用

AdaptiveClient.EntityFrameworkCore也可以作为nuget软件包使用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接