nullreference异常

时间:2011-05-23 17:26:08

标签: linq linq-to-sql

使用Linq到sql和server explorer,我映射到loginvalidation存储过程。所以我写下面的代码:

ClientReportingDataContext db = new ClientReportingDataContext();
var data = db.ADMIN_LoginValidation(login, password);

它会在以下行引发异常:

public ClientReportingDataContext() : 
        base(global::System.Configuration.ConfigurationManager.ConnectionStrings["FeedsConnectionString"].ConnectionString, mappingSource)

抛出异常:

  

对象引用未设置为对象的实例。

我正在从单元测试类中调用此函数。我在web.config中填充了feedsconnectionstring。

我将web.config放在unit tests文件夹中,也放在debug和debug / bin下。不知道我错过了什么。

提前感谢任何建议。

1 个答案:

答案 0 :(得分:2)

对于单元测试,

ConnectionStrings["FeedsConnectionString"].ConnectionString

不会从您的web.config文件中读取;它将从测试运行器的应用程序配置文件中读取。因此,除非您将FeedsConnectionString放在测试运行器的应用程序配置文件中,否则

ConnectionStrings["FeedsConnectionString"]

null,所以

ConnectionStrings["FeedsConnectionString"].ConnectionString

将抛出NullReferenceException

这就是为什么测试和应用程序配置文件不能很好地融合的原因。

您应该考虑以下事项:

public ClientReportingDataContext(string connectionString) :
    base(connectionString, mappingSource)

然后在测试中注入连接字符串。