2014-06-09 2 views
0


쿼리가 정확합니다. 로그 아웃 fx가 html href와 ajax에서 한 번 두 번 호출 되었기 때문에 오류가 발생했습니다. . html이 null 인 동안 ajax 호출에는 UID가 있었으므로 예외가 발생했습니다. html이 나중에 호출되었습니다. 귀하의 의견을 보내 주셔서 감사합니다. 이후 나는 stackoverflow에 새로운, 나는 그들이 어떻게 든 답변/의견을 처리하는 방법을 잘 모르겠습니다.새 datetime 값으로 행을 업데이트 할 수 없습니다. ef codefirst

새 datetime 값으로 행을 업데이트하려면 어떻게합니까?

  try 
      { 
       var last = (from l in db.loginActivity 
           where l.UID.Equals(_uid) 
           orderby l.LastLogin descending 
           select l).FirstOrDefault(); 

       last.LastLogout = DateTime.Now; 
       db.Entry(last).State = EntityState.Modified; 
       db.SaveChanges(); 
      } 

FirstOrDefault() 오류 : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. First() -> error : sequence를 사용했을 때 요소가 없습니다. 음, 데이터베이스에는 여러 레코드가 있습니다. 나는이 스 니펫을 어딘가에 사용했고 그것은 업데이트 된 셀이 datetime 형식이 아닐 때만 매력처럼 작동합니다.
조언이 있으십니까?

+0

즉, 기준에 맞는 데이터베이스 테이블의 레코드를 찾지 못했습니다. 'l.UID'와'_uid' 무엇입니까 –

+0

그것은 데이터가 존재하는지 확인하기 위해 수행 한 첫 번째 점검 (linqpad4 포함)이었습니다. – kodai

+0

당신이 발견 한 것에 관계없이, 통과하는 기준에 따라 db.loginActivity의 0 레코드가 발견되고 있습니다. 그래서'l.UID'와'_uid'는 무엇입니까? 또한, 왜 당신은'l.UID == _uid' 대신'l.UID.Equals (_uid)'를 사용하고 있습니까? –

답변

1

UID과 일치하는 레코드가 발견되지 않으므로 last이 null이라는 오류가 표시됩니다. 당신이 null이 아니라고 확인해야합니다 : 당신이 시도/캐치에이 일을하고 있기 때문에,

var last = ...; 
if (last != null) { 
    last.LastLogout = DateTime.Now; 
    db.Entry(last).State = EntityState.Modified; 
    db.SaveChanges(); 
} 

또는 대신 FirstOrDefaultFirst를 사용하고 그냥 찾을 수없는 경우 First가 발생 예외를 잡을 수 기록.

last이 돌아오고 있는지에 관해서는 중단 점을 설정하고 _uid이 무엇인지 예상하십시오.

1

필터 조건을 만족하는 항목이없는 것 같습니다. 여기에서 l.UID.Equals (_uid) 쿼리에서 "where"를 제거하려고 했습니까?

관련 문제