我添加了一个带有相应连接字符串和有效凭据的DBML文件。我登录了托管SQL服务器的VPN,我想测试我的WCF服务,如果它找不到数据库会引发什么错误。
public List<Users> GetName(strinng UserEmail)
{
var dbResult = from u in Users
where u.email.Equals(UserEmail)
select {v.Firstname, v.LastName, v.Zip};
//Build List<Users>
return List<users>;
}
说上面是我的方法之一。在调用无法访问我的数据库的方法时,我没有看到任何错误被抛出。如何检查连接是否有效以及数据库是否存在?
我认为DBML.cs文件可以确保在cstor
中进行此检查答案 0 :(得分:1)
当我运行我的小测试时,我尝试执行ToList()失败(这是因为LINQ的执行延迟)。当无法建立连接时,我得到了一个SqlException ...需要一段时间才能返回异常,但它不可避免地发生了。
这是我的小测试LINQ代码:
TestDataContext con = new TestDataContext();
var users = from user in con.Users
select user;
//failed on this line...
IList<User> faUsers = users.ToList();
我的测试是我只关闭了我的Sql Server实例。
如果您正在讨论从此webmethod调用的客户端进行调试,那么在webservice和数据库服务器之间的连接之前,与webmethod的连接可能会超时....这可能是您的超时异常。 / p>
答案 1 :(得分:0)
即使这不是你的问题,你也可以用这样的方法(未经测试)使你的方法更简单:
var dbResult = from u in db.Users
where u.email.Equals(UserEmail)
select new User()
{
FirstName = u.Firstname,
LastName = u.LastName,
Zip = u.Zip
};
return dbResult.ToList();
//更新:更改了从原始问题中复制的拼写错误