2009-12-20 3 views
1

DotNetOpenAuth를 asp.net 웹 사이트에 통합했습니다. Entity 프레임 워크에 익숙하지 않습니다. LogingFrame.aspx.cs에있는 Database.DataContext.AddToUser (user)는 사용자를 데이터베이스에 추가하지 않습니다. 사용자 및 인증 토큰 레코드가 올바르게 채워집니다. 동일한 데이터베이스를 가리키는 템플릿 프로젝트의 코드가 제대로 작동합니다. 아마 내가 설립하는 동안 뭔가를 놓친 것 같아. 확인할 사항을 확인하십시오. 코드를 제공해야하는 경우 알려주십시오.DotNetOpenAuth - Database.DataContext.AddToUser (user)가 작동하지 않습니다.

답변

1

... 사용자를 데이터베이스에 추가하지 않습니다. 사용자 및 인증 토큰 레코드가 올바르게 채워집니다.

질문 자체가 모순 된 것으로 보이거나 잘못 읽었습니다. 사용자가 추가되지 않는다고 말하는 것처럼 들리지만 사용자가 추가됩니다.

나는 그걸 찔러보고이 프로젝트 템플릿이 어떻게 작동하는지 알려주지. 데이터베이스 트랜잭션은 단일 HTTP 요청 내에서 모든 데이터베이스 변경 사항을 래핑합니다. 이 동작을 위해 RelyingPartyLogic 어셈블리에 내장되어 있습니다. 또한 처리되지 않은 예외가 발생하지 않은 성공적인 HTTP 요청이 끝나면 SaveChanges()가 호출되고 트랜잭션이 커밋됩니다. 처리되지 않은 예외가 발생하면 변경 사항과 트랜잭션이 롤백됩니다. 이는 데이터베이스 무결성을 보호하는 데 도움이됩니다.

그러나 "사용자 추가"방법을 통해 디버깅하고 AddToUser 실행 후 사용자 테이블로 이동하여 추가되었는지 확인하면 ' SaveChanges가 아직 호출되지 않았고 트랜잭션이 아직 커밋되지 않았기 때문에 존재하지 않습니다.

표준 Entity Framework 동작에 따라 변경 내용을 데이터베이스에 유지하려면 SaveChanges를 호출해야하지만 앞서 말한 것처럼 RelyingPartyLogic 라이브러리가이 호출을 수행합니다. 그러나 새로 추가 된 행의 ID를 얻기 위해 자신의 코드에서 SaveChanges를 직접 호출해야하는 경우가 있습니다. 이것은 커밋하기 전에 트랜잭션 내에서도 작동합니다.

희망이 있습니다.

0

DataContext.SaveChanges()를 호출하는 것을 잊었습니까?

+0

일반적으로 확인해야 할 좋은 점은 프로젝트 템플릿에는 필요하지 않지만 HTTP 요청이 닫힐 때 자동으로 SaveChanges가 호출되기 때문입니다. –

관련 문제