我看到一些code sample在创建新的DbContext时将实体框架连接字符串作为构造函数参数。但是当我将一个新的ADO.NET实体数据模型添加到项目(数据库优先)中时,DbContext只有一个无参数构造函数。
我错过了一步吗?我该怎么做才能得到那个构造函数?
Visual Studio 2012,目标是.net framework 4.5实体框架5.
答案 0 :(得分:8)
根据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
答案 1 :(得分:4)
新数据模型向导向配置文件添加连接字符串,并设置代码生成以使用无参数构造函数创建上下文,然后使用“name = foo”调用基本构造函数,以便配置中的连接字符串文件将被使用。
如果要将连接字符串显式传递给构造函数(而不是从config中读取),那么可以使用上下文是部分类来添加该构造函数的事实。您还可以修改T4代码生成模板以更改生成的构造函数。
答案 2 :(得分:1)
如果你想改为代码,首先使用它:)
public class MyCustomDBContext : DbContext
{
public MyCustomDBContext()
: base(GetConnectionStringName())
{
}
public MyCustomDBContext(string connString) : base(connString)
{
}
答案 3 :(得分:0)
我修改了这个,通过改变"代码生成策略"来解决它与EF4的习惯。 to" Legacy ObjectContext"