【问题标题】:One Entity Framework Model for Multiple Database Providers适用于多个数据库提供者的一种实体框架模型
【发布时间】:2014-01-24 21:27:07
【问题描述】:

我之前使用实体框架为数据库生成模型。问题是实体框架为特定的提供者(SQL Server、Oracle 等)生成模型。如何生成可以与许多提供者一起使用的模型。

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

【问题讨论】:

  • 这个问题你解决了吗?如果是的话,也许你可以分享一下。
  • 不幸的是我没有。所以,我开始编写自己的 DAL,它仅限于我当时包含的提供者。
  • 您是否尝试过 Stackoverflow Dapper 及其扩展。 Dapper 是一个轻量级的 ORM,它足够快速和简单。

标签: c# database entity-framework ado.net-entity-data-model


【解决方案1】:

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

如何生成一个可以与许多提供者一起使用的模型。

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

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

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

When a specific connection string is selected (i.e. MSSQL or MySQL) AdaptiveClient uses Autofac to resolve the correct components for you.

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

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

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

AdaptiveClient is available as a nuget package.

AdaptiveClient.EntityFrameworkCore is also available as a nuget package.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多