0

데이터베이스에서 aspnet_regsql을 수행 한 후 C#에서 ASP.NET을 개발 중입니다. Game 객체를 추적하여 사용자에게 매핑하고 싶습니다 ... 가능한 경우 사용자에게 Games 목록이 필요하지만 분명히 현재 멤버십 구현에 넣을 수는 없습니다. 피하려고. 그러나 MVC에서ASP.NET MVC 멤버십 매핑

public List<Game> Games { get; set; } 

, 실제로 다른 모델이지도를 어떻게 (동일한 데이터베이스를 사용하는 것, 그냥 데이터베이스 내의 다른 테이블이 될 것이다).

실제로 작동합니까? 백그라운드에서 MVC는 UserIdaspnet_User.UserId인지 확인합니까? 내가 MembershipProvider 인터페이스의 확장을 만드는 것을 싫어 하겠지만, 위의 코드가 작동하지 않으면 내가해야 할 수도 있습니다!

또한 저는 프로필 활용에 관심이 없습니다. 보시다시피, 내가 매핑하려고하는 데이터는이 애플리케이션의 핵심입니다. 프로필 데이터를 분석하는 것은 다른 개체에 매핑해야하는 경우 실제로 불가능합니다.

+0

그냥 명확히하기 위해 Entity Framework를 사용하고 있습니까? –

답변

0

Gameaspnet_User을 입력해야하는 경우 설정이 작동하지 않습니다. 이를 위해서는 aspnet_User을 엔티티로 매핑해야합니다.

한편 특정 사용자의 게임 만 검색하면 모델이 작동합니다. 데이터 무결성을 유지하기 위해 수동으로 FK를 생성해야합니다.

[Table("aspnet_User")] 
public class User 
{ 
    public int UserId { get; set; } 
    // other props 
} 
+0

감사! 그래서 MVC는 기본적으로 'UserId'를 'Membership'이 사용하는 적절한 'aspnet_User'에 매핑합니다. \ MVC 뒤의 비밀 소스는 나를 때로는 겁나게합니다. \ –

+1

@AndrewHarris 당신이 말하는 것은 MVC가 아닌 Entity Framework입니다. – Eranga

+0

아, 좋은 지적입니다! 개발로 돌아 가면 Msft는 마법적인 일을하는 많은 것들을 가지고 있습니다. 효과를 얻으려면 EF를 닦아야합니다.그 자체로, EF가 내가 UserId를 aspnet_User.UserId의 맵에 맵핑하도록 구체적으로 원하는지 알 수는 없습니다. –

0

을 다음과 같이

편집

당신은 당신이 새로운 게임을 추가 할 때, 단순히 GUID (아닌 INT입니다 현재 사용자의 ID를 얻을 엔티티로 aspnet_User 테이블을 매핑 할 수 있습니다 위와 같이 - 양식에 저장되어 사용자가 새로운 값을 주입 할 수 있도록 guid를 좀더 안전하고 덜 쉽게 추측 할 수 있습니다. 그 부분은

입니다.

는 안녕히, 모든 게임이 가고, 거기 비록 관계를 원한다면이 단순히

ctx.Games.Where(o=>o.UserId=Membership.GetUser().ProviderUserKey) 

것 쿼리 당신이 사용자를 삭제 같이 (모두 삭제를 고려할 Eranga의 relationship.If @ 고려) 다음 섹션을 참조하십시오 : http://msdn.microsoft.com/en-us/library/bb738695.aspx

+0

어떻게 GUID가 더 안전 할 것 같지 않아? 쿼리 문자열에서 사용자 ID를 허용하거나 게시하지 마십시오. GUID 인덱싱은 시퀀스 된 int를 사용하는 것보다 훨씬 비효율적입니다. 나는 이식성이 요구되는 경우에만 guid를 추천하는 경향이있다. – jgauffin

+0

@jgauffin Int 기반 사용자 ID는 순차적이며 쉽게 예측할 수 있습니다. 이 ID를 어딘가에 게시하지 않으려 고 개발자에게 의존하고 있으며 필연적 인 일이 발생합니다. 따라서 멤버십 공급자의 UserId는 guid 기반입니다. '허용하지 않음'이라고 말하면보다 안전한 패턴을 구현하는 것과는 대조적으로 개발자가 개발자에게 의존한다는 것을 의미합니다. 또한 MVC가 Html.EditorFor를 통해 뷰를 브레인이없는 렌더링을 제공한다고 고려하면 표시중인 모든 모델 또는 뷰 모델에서 userid를 제외해야한다는 것을 기억해야합니다. 다시 한번 말하지만, 개발자가해야 할 일이 많이 있습니다. –

+0

guid도 쉽게 찾을 수 있습니다. 사용자를 검색하고 사용자 세부 정보 링크 위로 마우스를 가져 가면됩니다. – jgauffin

0

아니요. 마법 같은 일은 일어나지 않습니다. 올바른 ID를 UserId에 할당해야합니다.

EF 또는 MVC가 로그인 한 사용자의 ID를 사용하려는 것을 어떻게 알 수 있습니까? 빈 UserId 속성이 현재 사용자의 속성이어야 함을 의미하지 않습니다.