【发布时间】:2013-04-19 02:42:20
【问题描述】:
我希望有人能够帮助我,因为我似乎完全陷入了困境。
对于我们公司即将开展的项目,我们希望将 Entity Framework 5 与代码优先方法一起使用。我玩了一会儿,每次尝试将 EF 与我们现有的库一起使用时,我都失败了,因为 EF 似乎严重依赖于现有的 app.config。
在我们公司,我们有一个内部数据库库,它允许我们连接到各种数据源和数据库技术,利用 MEF(托管扩展框架)为数据库提供者提供的优势。我只需传递一些数据库设置,例如主机(或文件)、目录、用户凭据和数据库提供程序名称,库会查找适当的插件并返回自定义连接字符串或 IDbConnection。 我们希望将此库与 EF 一起使用,因为它使我们能够灵活地选择使用哪个数据库,同时在运行时更改数据库。
所以。我看到一个典型的 DbContext 对象在构造函数中没有参数。它会自动在 app.config 中查找适当的连接字符串。我们不喜欢这样的事情,所以我更改了默认构造函数以获取传递给 DbContext 基类的 DbConnection 对象。没有交易。
代码优先模型更改时会出现问题。 EF 会自动注意到这一点并查找迁移类/配置。但是:典型的迁移类需要上下文的默认无参数构造函数!太可惜了!
所以我们使用 IDbContextFactory 接口构建自己的迁移类。但同样,这个 IDbContextFactory 似乎也需要一个无参数的构造函数,否则我无法添加迁移或更新数据库。
此外,我制作了自己的数据迁移配置器,用于传递上下文以及目标数据库。问题就在这里:无论我尝试什么,它都找不到任何迁移类。
我完全陷入困境,因为似乎使用 EF 的唯一方法是将连接字符串保存在 app.config 中。这很愚蠢,因为我们需要在运行时更改数据库连接,而 app.config 对默认用户来说是只读的!
如何解决?
【问题讨论】:
-
如果你不传入连接字符串那么它必须从app.config中读取它?否则,它怎么会找到它?
标签: c# .net linq entity-framework app-config