2

LINQ & 엔티티를 사용하여 ASP.NET 멤버 자격 공급자를 .NET 3.5로 이식 할 때 필자가 읽었습니다. 그러나 모든 단일 샘플에서 보여주는 DB 모델은 새로운 모델이며 오히려 오래된 모델을 상속 받았습니다. 차이 :Entity Framework - 2 개의 실제 테이블을 하나의 "가상"테이블 문제로 통합

  • 사용자사용자 & 회원 테이블의 한 쌍으로 분리된다.
  • DB를에있는 테이블의 모든
  • 은 내가 속성을 복사 한이 작동하려면

일부 열 (사용자 이름, 이메일, 등)의 낮춘 버전이

  • aspnet_ 앞에 추가된다 (DB에서 1 ​​< -> 1 관계가 아닌 1 < -> 0,1) 인 User 테이블로 이동하고 응용 프로그램에 aspnet_Applications, 프로필에 aspnet_Profiles, 사용자에 aspnet_Users, 역할에 aspnet_Roles를 각각 이름을 바꿉니다. 내가 컴파일 할 때 하나 둘의 문제로 실행하고, 지금

    Image http://content.screencast.com/users/Keith.Barrows/folders/Jing/media/c3cabe76-272d-4a33-b924-8d2c50e45e9c/EFMembership.png
    Link to full size image of model

    를 (이미지 참조). 이미지의 모델을 사용

    1. 이 오류를 얻을 : 매핑 조각에 문제는 라인 (464)에서 시작 : EntitySets '하여 Userset'와 'aspnet_Membership는'모두 'aspnet_Membership'테이블에 매핑됩니다. 기본 키가 충돌 할 수 있습니다.
    2. 난 다음 수 (위의 오류를 처리하는) 내 모델에서 aspnet_Membership 테이블을 삭제하는 경우 : 매핑 조각의 문제는 라인 384에서 시작 : 열 aspnet_Membership.ApplicationId 테이블에 aspnet_Membership이 매핑해야합니다 : 그것은 기본값이 없습니다 Null을 허용하지 않습니다.

    역방 스토어를 직접 편집 할 수있는 능력이 최고가 아니며 다른 것을 해킹 할 수있는 무언가를 해킹하고 싶지 않습니다. 이 문제를 해결하기위한 제안, 모범 사례 등을 찾고 있습니다.

    참고 : 기존 앱의 모든 로직을 대체 할 수 없기 때문에 데이터 테이블 자체를 이동하는 것은 옵션이 아닙니다. 새로운 App을 만들기 위해이 EF Provider를 구축하고 있습니다. 향후 6 개월 동안 기존 앱이 새로운 구조로 비트 단위로 이전됩니다.

    참고 : 더보기 좋게보기 위해 이미지 바로 아래에 링크를 추가했습니다.

  • 답변

    0

    키스

    Thnis 정말 잘 스크린 샷을 볼 수

    ... 내 머리 위로 떨어져있다. 하지만 당신의 첫 번째 시도는 동일한 테이블을 다시 가리키는 두 엔티티에서 중복 된 속성을 갖는 것이 었습니다. 법적은 아닙니다.

    두 번째 엔티티 분할을 시도한 것으로 보입니다. 하지만 당신이 저장소 스키마에서 테이블 정의를 삭제 한 것처럼 보입니다.

    엔티티 분할 (엔티티 키를 공유하는 경우 테이블 1과 테이블 2를 공유 할 수있는 두 테이블의 소품으로 하나의 엔티티)을 가져와 다시 가져 오는 것이 좋습니다.

    포인터가 필요합니까? 나는 하나를 찾기 위해 google해야 할 것입니다. 나는 확신한다 "어딘가에있어 블로그 게시물을했습니다.

    줄리

    +0

    감사합니다 줄리, 포인터가 좋을 것입니다! DB에있는 users 테이블에 멤버십 테이블을 물리적으로 병합하고 몇 개월 내에 멤버십 테이블을 삭제할 수있을 때까지 두 테이블을 동기화 된 상태로 유지하기 위해 트리거를 사용하는 방법을 살펴볼 것입니다. –

    +0

    또한 내 게시물의 이미지 바로 아래에 전체 크기 이미지에 대한 링크를 추가했습니다. –

    0

    내가 EF4를 사용하여이 문제를 가지고있다. EF4가있다."이것은 PK/FK를 포함 할 수 FK 협회 "수 (애플리케이션 ID)를 사용하여 FK를 통해 매핑하는 연결을 사용합니다.

    이 작업을 수행하려면 ApplicationId를 종속 된 각 엔티티에 다시 추가 한 다음 엔티티간에 만든 연결을 두 번 클릭하고 두 엔티티를 매핑해야합니다 PK/FK가 서로 교차합니다.

    이제 열거 형 지원 만 추가 할 수있는 경우 .../