使用Linq到sql和服务器资源管理器,我映射到了一个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中馈送连接。
我把web.config放在单元测试文件夹中,也放在debug和debug/bin下。不确定我错过了什么。
提前谢谢你的建议。
对于单元测试,
ConnectionStrings["FeedsConnectionString"].ConnectionString
不会读取您的web.config
文件;它将读取测试运行程序的应用程序配置文件。因此,除非您已将FeedsConnectionString
放入测试运行程序的应用程序配置文件中
ConnectionStrings["FeedsConnectionString"]
是null
,所以
ConnectionStrings["FeedsConnectionString"].ConnectionString
将抛出一个NullReferenceException
。
这就是为什么测试和应用程序配置文件不能很好地处理的原因。
您应该考虑以下内容:
public ClientReportingDataContext(string connectionString) :
base(connectionString, mappingSource)
然后在测试中注入连接字符串。