我之前使用Entity Framework为数据库生成模型。问题是Entity Framework为特定的提供者(SQL Server,Oracle等)生成模型。如何生成可与许多提供商合作的模型。
我想过使用DbProviderFactory
类手工制作我自己的数据访问层。但是从头开始构建模型涉及很多工作,这就是为什么我想知道我是否可以生成一个与多个提供商一起工作的实体框架模型?!!!
答案 0 :(得分:0)
是的,您可以使用一个DbContext并定位多个数据库提供者!
如何生成可以与许多提供程序一起使用的模型。
实体框架将为您生成特定于提供程序的SQL。您必须解决的真正问题是,当您必须自己进行特定于提供程序的调用时(例如,调用特定于提供程序的存储过程等),如何告诉EF使用哪个提供程序。您还必须处理特定于提供程序的迁移问题,数据库初始化程序和提供程序特定的集成测试。
您可以将AdaptiveClient和AdaptiveClient.EntityFrameworkCore用于上述所有挑战。
简而言之,AdaptiveClient允许您将连接字符串键入应用程序中特定于提供程序和特定于传输的组件。
选择特定的连接字符串(即MSSQL或MySQL)时,AdaptiveClient使用Autofac为您解析正确的组件。
您需要做的就是使用您定义的键注册您的提供程序/传输特定的组件。 AdaptiveClient提供了一个注册助手,使注册过程变得非常简单,因为它提供了特定于Entity Framework组件的方法。
下载完整的Zamagon Demo版本。该演示说明了迁移,数据库初始化程序,用于集成测试的拖放方案以及上面列表中的每个要点。
AdaptiveClient is available as a nuget package。
AdaptiveClient.EntityFrameworkCore is also available as a nuget package。