实体框架 6.0:如何在代码中配置连接时使用 edmx 上下文



我使用Visual Studio 2013,Entity Framework 6.0。到目前为止,我在应用程序配置中有连接字符串,并且有效。数据库上下文是通过添加"ADO .Net 实体数据模型"和选项"来自数据库的 EF 设计器"创建的但是现在我需要将其移动到代码中,因为它将取决于用户输入。

我按照此示例处理了连接字符串,并且我的数据库成功连接http://msdn.microsoft.com/library/vstudio/bb738533

但是现在我需要将连接与我的数据库上下文一起使用,而我无法完成此操作。假设我的数据模型名为MyDB,那么我在MyDB.edmx下有MyDB.Context.cs,还有从DbContext派生的MyDBEntities类。

我重新创建了数据模型,但这次没有选择在应用程序配置中存储连接字符串的选项。结果的第一个区别是MyDBEntities现在只被称为实体。为什么呢?

我看到 DbContext 有一个接受 EntityConnection 的构造函数。我能够使用连接创建一个 DbContext,但它没有与 MyDB.edmx 下的数据类型链接。MyDBEntities(或更改后的实体)没有接受实体连接的构造函数。

那么如何使用生成的 edmx 模型但在运行时配置/打开连接呢?

找到了。好的,在 EF 6.0 中,DbContext 不再具有接受连接的构造函数,但有一个接受连接字符串的构造函数。

只需修改生成的代码并添加以下构造函数:

public Entities(String connectString)

: base(connectString) { }

然后直接传递连接字符串,它将起作用。

最新更新