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]...

在突然无法使用实体框架从表中获取任何记录之前它正在工作

不知道在没有对 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;
    }

在此处输入图像描述

连接字符串: <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" />

注意:我表中的第一条记录是我想要获取的记录,因此无法使用任何其他功能

4

2 回答 2

2

您可以使用 FirstOrDefault 然后检查 null

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

if(aspnetUsers != null)
{

  //do your stuff
return true
}

else
{
return false
}
于 2013-02-05T07:44:26.197 回答
1

如果过滤后的First序列至少不包含一个元素,则 LINQ 方法将引发异常。因此,如果username在您的数据库中找不到 ,则这行代码会引发错误。您可以使用FirstOrDefault并检查null.

于 2013-02-05T07:44:44.560 回答