序列在实体框架中不包含任何记录

时间:2013-02-05 07:41:14

标签: c# linq entity-framework entity-framework-4

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;
    }

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" />

注意:我表中的第一条记录是我想要的记录,所以不能使用任何其他功能

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:1)

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

相关问题