2009-12-09 3 views
1

나는 SQL에 linq과 잘 작동하도록 asp.net 회원 자격을 설정하는 가장 좋은 방법은 궁금합니다.ASP.NET 회원 및 Linq to SQL

외부 키 관계에 username 필드를 사용하고 linq에서 asp 사용자 속성을 인식하도록하고 싶습니다.

users 테이블과 다른 테이블 사이의 관계를 바로 잡는데 문제가 있습니다. 이 기능을 사용하려면 사용자 이름을 기본 키로 설정해야합니까?

답변

4

내가 그랬을 때 aspnet_Users 테이블의 UserId 필드를 외래 키로 지정했습니다. 당신이 LinqToSql를 사용하면 당신은 여전히이 같은 ASP에 사용자 이름을 기준으로 필터링 할 수 있습니다

from data in connection.MyTable 
where data.aspnet_User.UserName == User.Identity.Name 
select data; 

이 때문에 aspnet_Users 테이블과 자신의 테이블 사이의 외래 키 관계입니다.

+1

네, 그게 제가 한 일입니다. 매력을 발휘했습니다. –

+0

굉장한, 나는 그 다음 발굴을 줄 것이다. –

1

사용자 데이터베이스 테이블의 기본 키 제약 조건은 ASP.NET 멤버 자격 공급자와 관련이 없거나 거의 없습니다. 멤버 자격 공급자는 System.Web.Security에 정의 된 추상 클래스 MembershipProvider를 구현하는 클래스입니다. 기본적으로 asp.net 응용 프로그램은 aspnet_XXX 테이블에 링크 된 멤버십 공급자를 사용하지만 사용자 자신의 "Users"테이블을 사용하고 linq2sql을 통해 액세스하는 자체 공급자를 작성할 수 있습니다. 당신이해야 할 알은 System.Web.Security.MembershipProvider에서 상속 클래스를 생성하고 같은 Web.config의에서이 설정됩니다 사용자를 식별하는 데 사용 문자열 이름을 구현해야하는 방법을

<membership defaultProvider="MyMembershipProvider"> 
    <providers> 
    <clear/> 
    <add name="MyMembershipProvider" type="MyNamespace.MyMembershipProvider" applicationName="MyApp"/> 
    </providers> 
</membership> 

하지만, 테이블의 기본 키가 될 필요는 없습니다. 그것은 유일한 필드에 의해해야합니다. 좋은 생각은 INT를 기본 키로 사용하는 것입니다.