2009-08-11 6 views
0

나는 asp.net_UserTable에 2 개의 필드를 더 추가하고자하는 사용자에 따라 asp.net 멤버쉽을 가지고 있으며 사용자 생성 메서드가 내장되어 있으므로 편리합니다. 내 aspnet_user 테이블에Entity Framework에 무엇이 누락 되었습니까?

나는이

// All Standard Fields that come with this table 
ClubID<nullable) 
ClubName <nullable) 

처럼이 나는이

ClubID<PK> 
ClubName 

그래서이 관계는 하나 개의 클럽이 많은 사용자를 가질 수 있다는 형성이

클럽의 테이블과 관련 테이블 . 그러나 한 명의 사용자는 한 개의 클럽 만 가질 수 있습니다.

그래서 이제 Entity Framework 다이어그램에 FK가 표시되지 않기 때문에 Usertable aspnet에 ClubID를 추가하는 방법을 알아 냈습니다.

// Note in this case I am just using EF made to create but in reality I will use the Membership.Create. 
aspnet_Users test = aspnet_Users.Createaspnet_Users(Guid.NewGuid(), Guid.NewGuid(), "myTest5", "mytest5", false, DateTime.Now); 

      test.Club = Club.CreateClub("One224", "Two224"); 
      test.ClubName = "go"; 

      MyEntities.AddToaspnet_Users(test); 

      MyrEntities.SaveChanges(); 

그래서 내가하는 일은 의미가 없으며 더 좋은 방법이 있기를 바랍니다. 클럽을 만들고 test.club에 넣으려고합니다.

이 추가는 ClubID 기본 키이지만 clubName을 추가하지 않습니다.

그러면 클럽 이름을 별도로 추가해야합니다. 왜 그런가요? 더 좋은 방법이 없을까요?

필자는 또한 linq 메소드 구문을 선호하므로 필요한 경우이 구문을 사용할 수 있습니다.

답변

4

몇 가지를 권하고 싶습니다.

하나 : aspnet_ * 테이블에 열을 추가하지 않는 것이 좋습니다. 길 아래로 인증 방법을 변경하고 싶다면 더 이상 필요하지 않더라도 그 테이블을 주변에서 들러 붙어있을 것입니다. 또한 멤버쉽 스키마를 사용자 지정했기 때문에 언젠가는 업그레이드 할 수없는 새로운 멤버쉽 공급자 버전이있을 수 있습니다.

2 : 대신 자신의 기본 키가 있지만 ASP.NET 멤버 고유 키 (GUID)로 다시 링크되는 사용자 (또는 원하는대로)라는 새 테이블을 만들지 마십시오. 테이블이

사용자 사용자 아이디 ClubId (FK 다시 클럽 테이블) AuthenticationUserId (FK 다시 aspnet_User 테이블) (PK)

세처럼 보일 수 있습니다

: 난 몰라 사용자 테이블과 클럽 테이블에서 ClubName을 반복 한 이유를 이해하십시오. 정말로 한 번만 ClubName을 정의하면됩니다. 클럽 테이블 유지 방법은 같지만 사용자 테이블에서 ClubName 열을 제거하십시오.

클럽을 사용자와 연관시키는 위의 코드는 정확하고 작동하기 때문에 Entity Framework가 작동합니다. 엔티티를 서로 연결하고 데이터 스키마의 관계형 측면에서 추상화됩니다. 처음 익숙해지기는 다소 이상하지만 작동합니다.

+0

예요. 저는 Redsign 할 것이라고 생각합니다. 그래서 UserID를 사용하고이 두 필드를 테이블 밖으로 가져와 관계를 설정하십시오. 당시에 생각한 것은 다른 테이블을 둘러보고 내가 원하는 것을 찾기 시작할 필요가 없다는 것입니다. 특정 사용자가 만들어 졌으므로 ClubName = "A"UserName = "bob"및 ClubName = "B"UserName = "bob"이 있으면 DB에 원하는 방식부터 ClubName과 UserName이 필요합니다. 별도의 사용자로 취급됩니다. – chobo2

+0

이제는 ClubName에 ClubName, ClubID 및 UserID가 있지만 여전히이 클럽 테이블에서 어떻게 여전히 추가 할 수 없는지 보여주는 userID를 가져와야합니다. – chobo2

+0

이 권장 사항을 강력하게 지원합니다. aspnet_users 테이블을 수정하지 말고 연장하십시오! EF를 사용하면 데이터베이스의 해당 테이블에서 코드에 멋진 객체 모델을 쉽게 만들 수 있습니다. –

관련 문제