C# 跳过重载构造函数的对象的新实例

C# 跳过重载构造函数的对象的新实例,c#,visual-studio-2010,edmx,C#,Visual Studio 2010,Edmx,使用vs2012,我得到了一个测试单元项目(用于测试服务),它包含了一个.edmx文件和linq。edmx是在设计时创建的,我创建了一个对象(名为Store.Data.Common),该对象从App.Config文件检索连接字符串(解密字符串并构建整个字符串,包括元数据): 我还修改了.tt文件以包含构造函数的重载,从而调用此方法来构建连接字符串,如下所示: //Original Constructor which I modified and added the parameter to pa

使用vs2012,我得到了一个测试单元项目(用于测试服务),它包含了一个.edmx文件和linq。edmx是在设计时创建的,我创建了一个对象(名为Store.Data.Common),该对象从App.Config文件检索连接字符串(解密字符串并构建整个字符串,包括元数据):

我还修改了.tt文件以包含构造函数的重载,从而调用此方法来构建连接字符串,如下所示:

//Original Constructor which I modified and added the parameter to pass to the other constructor.
public StoreContext()
 : base("name=StoreContext")
{
}

//Constructor I added:
public StoreContext(string connection)
{
    Store.Data.Common.ConnectionBuilder.GetConnectionString("StoreContext");
}
但是,当我尝试为StoreContext新建一个对象并将构造函数留空时,它永远不会到达第二个构造函数:

StoreContext storeContext = new StoreContext();
当我调试这个测试并遍历它时,它只会到达第一个构造函数,就这样。显然,如果我这样做:

StoreContext storeContext = new StoreContext("Blah");

然后按照预期转到第二个方法……我的问题是,为什么第一个方法在不向构造函数传递任何内容时不起作用?从技术上讲,它应该是有效的,对吗

我想你是想用

public StoreContext()
  : this("name=StoreContext")
{
}
(使用
this
而不是
base

使用
this()
表示在同一个类上调用构造函数。当您说
base()
时,您试图调用基类上的构造函数


编辑:它看起来也不像是在使用传递给非默认构造函数的参数。但那是另一个问题,不是你问题的根源。

我想你是想用

public StoreContext()
  : this("name=StoreContext")
{
}
(使用
this
而不是
base

使用
this()
表示在同一个类上调用构造函数。当您说
base()
时,您试图调用基类上的构造函数


编辑:它看起来也不像是在使用传递给非默认构造函数的参数。但这是另一个问题,不是问题的根源。

我在平板电脑上太快了!:)@Tim进行了这些更改,但当我尝试查询数据时,我得到了一个错误代码,使用T4模板为Database First和Model First development生成,如果在代码优先模式下使用,则可能无法正常工作。要继续先使用数据库或先使用模型,请确保在正在执行的应用程序的配置文件中指定了实体框架连接字符串。要使用这些类,这些类是从Database First或Model First生成的,代码首先使用属性或DbModelBuilder API添加任何附加配置,然后删除引发此异常的代码。“我对T4模板和Db First/Model First/Code First配置不太熟悉。如果您对新错误不确定,您可能想开始一个新问题。从我的平板电脑上看,太快了!:)@Tim进行了这些更改,但当我尝试查询数据时,我得到了一个错误代码,使用T4模板为Database First和Model First development生成,如果在代码优先模式下使用,则可能无法正常工作。要继续先使用数据库或先使用模型,请确保在正在执行的应用程序的配置文件中指定了实体框架连接字符串。要使用这些类,这些类是从Database First或Model First生成的,代码首先使用属性或DbModelBuilder API添加任何附加配置,然后删除引发此异常的代码。“我对T4模板和Db First/Model First/Code First配置不太熟悉。如果你不确定这个新错误,你可能想开始一个新的问题。