以前我曾使用过Entity Framework来生成数据库模型。但问题在于,Entity Framework只能为特定的提供程序(如SQL Server、Oracle等)生成模型。那么,我如何生成可以与多个提供程序一起使用的模型呢?
我考虑手工制作自己的数据访问层,使用DbProviderFactory
类。但是从头开始构建模型需要大量的工作,这就是我想知道是否能够生成一个可与多个提供程序一起使用的Entity Framework模型的原因?!!!
以前我曾使用过Entity Framework来生成数据库模型。但问题在于,Entity Framework只能为特定的提供程序(如SQL Server、Oracle等)生成模型。那么,我如何生成可以与多个提供程序一起使用的模型呢?
我考虑手工制作自己的数据访问层,使用DbProviderFactory
类。但是从头开始构建模型需要大量的工作,这就是我想知道是否能够生成一个可与多个提供程序一起使用的Entity Framework模型的原因?!!!
是的,您可以使用一个DbContext并针对多个数据库提供程序!
我如何生成适用于多个提供程序的模型。
Entity Framework会为您生成特定于提供程序的SQL。您真正需要解决的问题是,在必须自己进行特定于提供程序的调用(例如调用特定于提供程序的存储过程等)时,如何告诉EF要使用哪个提供程序。您还必须处理特定于提供程序的迁移、数据库初始化器和特定于提供程序的集成测试问题。
您可以使用AdaptiveClient和AdaptiveClient.EntityFrameworkCore解决上述所有挑战。
简而言之,AdaptiveClient允许您将连接字符串键入到应用程序中特定于提供程序和传输特定组件中。
当选择特定的连接字符串(即MSSQL或MySQL)时,AdaptiveClient使用Autofac为您解析正确的组件。
你只需要使用自定义的键注册提供程序/传输特定组件。AdaptiveClient提供了一个注册助手,使这个过程变得非常简单,因为它提供了针对Entity Framework组件的特定方法。