2013-02-05 29 views
0
StackTrace = " at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)\r\n at System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__0[TResult](IEnumerable`1 sequence)\r\n at System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult]... 

它突然不能使用實體框架來從表中的任何記錄之前工作序列包含實體框架中沒有記錄

不知道它是什麼天堂之前的罰款問題「T作出的EDMX文件進行任何更改要麼

public bool SetClientIdForUser(string username, string clientId) 
    { 
     aspnet_Users aspnetUsers = _objVaccinationContext.aspnet_Users.First(t => t.UserName == username); 
     //aspnetUsers.Client_Id = clientId; 
     aspnetUsers.Client_id = clientId; 
     var entry = _objVaccinationContext.Entry(aspnetUsers); 
     entry.State = EntityState.Modified; 
     _objVaccinationContext.SaveChanges(); 
     return true; 
    } 

enter image description here

連接字符串:<add name="ChildVaccinationEntities" connectionString="metadata=res://*/ChildVaccinationContext.ChildVaccination.csdl|res://*/ChildVaccinationContext.ChildVaccination.ssdl|res://*/ChildVaccinationContext.ChildVaccination.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost;initial catalog=CVSUAT;user id=sa;password=Password123;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

注:在我的表的第一個記錄是我想要得到這樣不能使用任何其他功能

+0

直接在Db中查看是否有任何記錄。甚至可能執行您在調試中看到的查詢。 – dutzu

+1

另請確保連接字符串沒有改變,如果你在一個團隊中工作,在源代碼管理下,有人可能簽入了一個不同的連接字符串或其他東西。 – dutzu

+0

在我的分貝中有記錄,並且該特定的用戶名和密碼也存在 – vini

回答

2

您可以使用FirstOrDefault然後檢查空

aspnet_Users aspnetUsers = _objVaccinationContext.aspnet_Users.FirstOrDefault(t => t.UserName == username); 

if(aspnetUsers != null) 
{ 

    //do your stuff 
return true 
} 

else 
{ 
return false 
} 
+0

不工作對我來說,我得到了同樣的錯誤 – vini

+0

如果使用FirstOrDefault – scartag

+1

@vini scartag的權利不能得到同樣的錯誤,這是不可能的。如果你得到同樣的錯誤,無論是你還是叫'.First'別的地方,或者你沒有重建項目(這應該自動發生)。請明確重建您的項目,啓動調試器,並且如果確實發生異常,請仔細查看異常來自哪裏。 – hvd

1

First方法記錄LINQ會拋出一個異常,如果過濾的序列至少包含一個元素。所以如果在您的數據庫中找不到username,這行代碼會引發錯誤。您可以使用FirstOrDefault並檢查null

+0

有在我的數據庫記錄和特定的用戶名和客戶端ID存在以及 – vini

+1

* LINQ的第一個方法拋出一個異常,經過過濾的順序並不完全包含一個元素*不是這樣。你誤認爲它是Single()方法。如果沒有至少一個元素,「First」將拋出異常。 – mipe34

+0

在我的表中的第一個記錄是我想要得到這樣不能使用任何其他功能 – vini