2010-09-09 71 views
0

我正在使用linq實體, 和我的實體模型坐在MSSQL數據庫之上。Linq to Entities是否會拋出SqlExceptions?

我想知道如果linq實體拋出SqlExceptions或不。
換句話說,如果連接到數據庫時出現問題,下面的代碼是否會成功捕獲異常?
如果沒有,在使用linq到實體時處理異常的最好方法是什麼?

 using (MyUserEntities userEntities = new MyUserEntities(connectionString)) 
     { 
      try 
      { 
       if (userEntities.Users.Any<User>(userInDB => 
               userInDB.UserName == username)) 
        { 
         //Do Something 
        } 
        else 
        { 
         //Do Something else 
        } 
      } 
      catch(SqlException e) 
      { 
      } 
     } 
+0

這將只適用於SQL Server,SQL Compact的異常不會從SQLException派生。 – leppie 2010-09-09 08:30:06

回答

1

是的,它會,如果有任何在你的函數的過程會導致一個問題,

userEntities.Users.Any<User>(userInDB => 
              userInDB.UserName == username) 

它會拋出一個異常級聯將whitch被抓。

儘管數據庫連接有一個特定的超時設置,所以有時需要一段時間。

你爲什麼不測試它?你可以自己找出這個答案

+0

我(盲目地)將一些使用ADO.NET的代碼轉換爲使用linq實體的代碼。我coudn't測試它,因爲我想不出生成一個SqlException。 – Yeonho 2010-09-09 08:37:58

+1

簡單,只需將數據庫的url更改爲一個錯誤的url並進行測試,或者給出錯誤的身份驗證,或者在表中添加一個字段並且不更新您的實體模型.... – Nealv 2010-09-09 09:07:36

+0

我以爲MyUserEntities實例不會被創建首先,如果我更改了網址或提供虛假身份驗證。 – Yeonho 2010-09-09 09:22:36