2017-09-29 9 views
0

다음 시나리오 (아래 코드)를 테스트하고 있습니다. 상점, 현금 지급기, 현금 책상 및 운영자가있는 쇼핑몰을 만드십시오.엔티티 프레임 워크 : 테이블의 테이블을 해결하는 방법

그래서 만든 다음 클래스

  • CashDesk
  • 사람

ID와 이름이있는 기본 클래스입니다.

그러면 Person의 파생 클래스가 PersonCashier 또는 PersonCustomer이 필요합니다.

모든 것이 관련되어 있으므로 많은 시나리오에 대한 교차 테이블을 만들어야합니다. MallShop

  • 가게가 CashDesks 포함 : MallShopCashDesk
  • 그리고 출납원이 포함 된 CashDesk : MallShopCashDeskPersonCashier

    • 몰 상점을 포함

      나는 다음과 교차 테이블을 만들었습니다

    이것은 다만 느끼지 않습니다. 누구든지 나를 모범 사례로 도울 수 있습니까?

    public class Mall 
    { 
        public int Id { get; set; } 
        [Required] 
        [MaxLength(100)] 
        public string Name { get; set; } 
        [Required] 
        public int NumberOfShopSpaces { get; set; } 
    } 
    
    public class Shop 
    { 
        public int Id { get; set; } 
        [Required] 
        [MaxLength(100)] 
        public string Name { get; set; } 
    } 
    
    public class CashDesk 
    { 
        public int Id { get; set; } 
        [Required] 
        public string Name { get; set; } 
    } 
    public class Person 
    { 
        public int Id { get; set; } 
        [Required] 
        public string FullName { get; set; } 
        [Required] 
        public string Gender { get; set; } 
    } 
    public class PersonCashier : Person 
    { 
        [Required] 
        public int ShopId { get; set; } 
        public virtual Shop Shop { get; set; } 
    } 
    

    이들은 기본 클래스입니다. 쇼핑몰에 상점을 추가하고 상점에 현금 가게를 추가하고 현금 출납원에 상점을 추가해야합니까?

  • 답변

    1
    public class Mall 
    { 
        public int Id { get; set; } 
        [Required] 
        [MaxLength(100)] 
        public string Name { get; set; } 
        [Required] 
        public int NumberOfShopSpaces { get; set; } 
    
        List<Shop> CurrentShops { get; set; } 
    } 
    
    public class Shop 
    { 
        public int Id { get; set; } 
        [Required] 
        [MaxLength(100)] 
        public string Name { get; set; } 
    
        public List<CashDesk> CashDesks { get;set; } 
    } 
    

    (내가 많이 노력했지만 코드를 게시하는 것은 스파게티 같은 질문 모양을 만들 것입니다) 나는 상점에 몰 클래스에 상점과 CashDesks의 목록을 추가했다. 이렇게하면 쇼핑몰에있는 상점 목록과 각 상점의 현금 데스크 목록이 제공되며 필요한 모든 작업을 수행 할 수 있습니다.

    데이터베이스가있는 경우 Mall 테이블과 Shop 테이블을 갖게됩니다.

    쇼핑 테이블에는 쇼핑몰 테이블에 대한 외래 키가있을 수 있습니다. 쇼핑 테이블에 연결하는 방법이며 맨 위의 클래스 구조와 함께 사용할 수 있습니다.

    또는 MallShops라는 다른 테이블을 가질 수 있습니다. 하나는 MallID이고 다른 하나는 ShopID입니다. 이를 링크 테이블이라고합니다.

    두 가지 방법 모두 많은 쇼핑몰과 연결된 더 복잡한 구조를 허용하는 두 번째 방법과 함께 작동합니다.

    먼저 데이터베이스 구조부터 시작하여 필요한 모든 것을 다루어야합니다. 그러면 클래스 등을 이해하는 방식으로 할 수 있습니다.EntityFramework와 같은 것을 사용하면 데이터베이스 구조가 준비되면 모든 클래스가 생성됩니다.

    1

    이것이 코드 인 경우 먼저 EF가 관계 테이블을 작성합니다. 클래스에 관계를 추가하기 만하면됩니다.

    당신이 원하는 관계에 따라 달라지기 때문에 설명이 명확하지 않습니다. 당신이 PersonCashier와 CashDesk 사이에 많은 많은 원하는 경우는 다음과 같습니다

    public class CashDesk 
    { 
        public List<PersonCashier> Cashiers { get; set; } 
    } 
    
    public class PersonCashier : Person 
    { 
        public List<CashDesk> CashDesks { get; set; } 
    } 
    

    (간결에 대한 모든 필드를 표시하지 않음)