我曾经使用实体框架为数据库生成过模型。问题是实体框架为特定的提供者(SQL Server、Oracle等)生成模型。如何生成一个可以与许多提供者一起工作的模型。
我考虑过使用DbProviderFactory
类手工创建自己的数据访问层。但是从头开始构建模型涉及到很多工作,这就是为什么我想知道是否可以生成一个实体框架模型,它可以与多个提供者一起工作?!
发布于 2018-12-04 08:52:14
是的,您可以使用一个DbContext并针对多个数据库提供程序!
我如何生成一个可以与许多提供者一起工作的模型。
实体框架将为您生成特定于提供程序的SQL。你必须解决的真正问题是,当你必须自己调用特定于提供程序的调用时,如何告诉EF使用哪个提供程序,即调用特定于提供程序的存储过程等。你还必须处理特定于提供程序的迁移、数据库初始化器和特定于提供程序的集成测试的问题。
您可以使用AdaptiveClient和AdaptiveClient.EntityFrameworkCore来解决上述所有挑战。
简而言之,AdaptiveClient允许您在应用程序中为特定于提供程序和特定于传输的组件键入连接字符串。
如果选择了特定的连接字符串(如MSSQL或MySQL),AdaptiveClient将使用Autofac为您解析正确的组件。
您所需要做的就是使用您定义的键注册您的提供程序/传输特定组件。AdaptiveClient提供了一个注册帮助器,使这一过程变得非常简单,因为它提供了特定于实体框架组件的方法。
注入提供对整个服务层的访问的单个客户端<代码>H119使用服务清单(外观)从任何其他服务中调用任何服务<代码>H220<代码>F221
下载完整的工作Zamagon Demo。该演示说明了迁移、数据库初始化器、集成测试的丢弃和重新创建场景,以及上面列表中的每个要点。
AdaptiveClient is available as a nuget package。
AdaptiveClient.EntityFrameworkCore is also available as a nuget package。
https://stackoverflow.com/questions/21342779
复制相似问题