我看到一些代码示例在创建新的 DbContext 时将实体框架连接字符串作为构造函数参数。但是当我将一个新的 ADO.NET 实体数据模型添加到项目中(首先是数据库)时,DbContext 只有一个无参数构造函数。
我错过了一步吗?我应该怎么做才能得到那个构造函数?
面向 .net 框架 4.5 实体框架 5 的 Visual Studio 2012。
我看到一些代码示例在创建新的 DbContext 时将实体框架连接字符串作为构造函数参数。但是当我将一个新的 ADO.NET 实体数据模型添加到项目中(首先是数据库)时,DbContext 只有一个无参数构造函数。
我错过了一步吗?我应该怎么做才能得到那个构造函数?
面向 .net 框架 4.5 实体框架 5 的 Visual Studio 2012。
根据 Arthur Vickers 的建议,我正在扩展部分类以拥有一个接受连接字符串的构造函数。在 C# 中(与 hege 的答案非常相似):
public partial class MyEFEntities
{
public MyEFEntities(string connectionstring)
: base(connectionstring)
{
}
}
或者在 VB.Net 中:
Partial Public Class MyEFEntities
Public Sub New(ConnectionString As String)
MyBase.New(ConnectionString)
End Sub
End Class
新的数据模型向导将连接字符串添加到您的配置文件,并设置代码生成以使用无参数构造函数创建上下文,然后使用“name = foo”调用基本构造函数,以便配置文件中的连接字符串为用过的。
如果您想将连接字符串显式传递给构造函数(而不是从配置中读取),那么您可以使用上下文是部分类的事实来添加该构造函数。您还可以修改 T4 代码生成模板以更改生成的构造函数。
如果您想先更改为代码,请使用此 :)
public class MyCustomDBContext : DbContext
{
public MyCustomDBContext()
: base(GetConnectionStringName())
{
}
public MyCustomDBContext(string connString) : base(connString)
{
}
我通过将“代码生成策略”更改为“旧版 ObjectContext”来解决此问题,以使其与 EF4 一起使用