WCF中的连接字符串与LINQ,C#,VS2008

时间:2009-05-20 19:47:12

标签: c# linq wcf

我添加了一个带有相应连接字符串和有效凭据的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

中进行此检查

2 个答案:

答案 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();

//更新:更改了从原始问题中复制的拼写错误