2014-01-08 5 views
0

나는 codefirst POCO가 있고, 현재 ASP.NET IDENTITY 사용자의 LastEditUser를 지정하려고합니다. 새로운 프로젝트로 생성 된 ApplicationUser 유형을 시도했습니다. 하지만 null로 저장됩니다.어떤 종류 (클래스) Asp.net Identy 사용자에 대한 내 POCO의 속성에 사용합니까

여기에 내 현재 시도

public class SomeClass 
{ 
    public string SomeProperty { get; set; } 
    public ApplicationUser LastEditMember { get; set; } 
} 

입니다 그리고 여기에 내가 내 컨트롤러에 저장하려고하는 방법이다.

string currentUserId = User.Identity.GetUserId(); 
ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId); 
instannceOfSomeClass.LastEditMember = currentUser; 

다시로드하십시오. LastEditMember 속성은 null입니다.

답변

1

UserManager 클래스를 사용하여 DbContext 개체로 작업하는 대신 사용자 개체를 가져 오는 것이 좋습니다. UserManager.FindByIdAsync (currentUserId)를 사용하여 사용자를 가져올 수 있습니다. 또한이 코드는 사용자가 응용 프로그램에 로그인 한 후에 만 ​​적용됩니다. 그렇지 않으면 currentUserId가 null이됩니다.

+0

UserManager를 사용해 보았지만 여전히 ApplicationUser를 반환합니다. 내 LastEditMember 속성을이 AplicationUser와 동일하게 설정하고 저장하면 모든 것이 잘된 것처럼 보일 수 있지만 엔티티를 다시로드하면 LastEditMember가 다시 null이됩니다 ... 그래서 똑같은 지점에 여전히 붙어 있습니다. 내가 할 수있는 건 뭐니? –

+0

좋아요, 데이터베이스에서 실제로는 LastEditMember 열에 사용자 ID를 저장했음을 알았습니다. SomeClass 엔티티가로드 될 때 사용자는 LastEditMember 특성으로로드하지 않습니다. –

+1

DB에서 사용자 정의 유형을 저장하고 검색하려면 클래스가 EF 규칙을 따라야합니다. 나의 첫 번째 직감은 가상으로 만들고 그것이 작동하는지 확인하는 것입니다. 다른 방법은이 링크를 따라 EF가 기대하는 방식으로 모델을 생성하는 것입니다. http://msdn.microsoft.com/en-us/data/jj679962.aspx –