C# 实体框架用户选择数据库目标

C# 实体框架用户选择数据库目标,c#,sql,entity-framework,C#,Sql,Entity Framework,这是我的问题。对于我的开源项目,允许用户在文件系统上存储缓存的内容是非常重要的,目前我们通过将缓存序列化为json并将其存储为纯文本文件来实现这一点。 因为我们希望在将来的版本中不再使用这个解决方案,所以我们现在正在寻找将缓存存储在数据库中的方法。 在我们当前的计划中,用户可以决定要使用哪个数据库,例如SQL Server compact、现有数据库等。。现在我的问题是: EF能实现这样的目标吗?我可以在应用程序运行时切换数据库,还是需要为数据库切换重新编译应用程序? EF是实现这一目标的最佳方

这是我的问题。对于我的开源项目,允许用户在文件系统上存储缓存的内容是非常重要的,目前我们通过将缓存序列化为json并将其存储为纯文本文件来实现这一点。 因为我们希望在将来的版本中不再使用这个解决方案,所以我们现在正在寻找将缓存存储在数据库中的方法。 在我们当前的计划中,用户可以决定要使用哪个数据库,例如SQL Server compact、现有数据库等。。现在我的问题是:

EF能实现这样的目标吗?我可以在应用程序运行时切换数据库,还是需要为数据库切换重新编译应用程序? EF是实现这一目标的最佳方式,还是我忽略了更好的解决方案? 如果您有不同的数据库,如Oracle、MS SQL等,那么在EF中,您必须为每个数据库创建不同的模型,然后根据它们使用的数据库将其分发给客户端

Would EF be the best way to do this, or am I overlooking better solutions?
这完全取决于您,您可以通过简单的ado.net实现这一点。但为了灵活性,EF code first和T4 code generator从模型中为您提供了很好的选项,其中您的域数据、数据访问层、业务规则对于不同的数据库是相同的。您只需在应用程序中修改连接即可。配置文件


我希望这能对您有所帮助。

也就是说,如果用户自己生成数据库结构,我们只需修改app.config文件中的连接字符串就可以了?如果它用于相同的数据库,如MS SQL到MS SQL,那么C公共上下文中的构造函数语法:basecnn name保持不变。但如果C构造函数中MS SQL到Oracle的语法也像公共上下文一样发生了更改:basenew OracleConnectionConfiguration Manager.ConnectionString[Cnn name].ConnectionString。
Would EF be the best way to do this, or am I overlooking better solutions?