나는이 질문을 다시 쓰겠다고 생각했다. 원래는 EAV/CR 데이터베이스 주위에 저장소 패턴을 래핑하는 방법이었습니다. 나는 다른 접근법을 시도하고있다."공장"디자인 패턴과 같은 저장소 패턴을 어떻게 코딩합니까?
질문 : 어떻게 데이터 저장소를 "공장"디자인 패턴 방식으로 코딩 할 수 있습니까? 나는 고정 된 수의 엔티티를 가지고 있지만이 엔티티에 대한 속성은 상당히 고객 특정 적입니다. 그들은 모두 비슷한 제품을 광고하지만 각 고객은 비즈니스 모델에 따라 다른 정보를 고객에게 첨부합니다. 예를 들어, 일부는 낭비를 제거하는 비율에 대해 신경을 쓰고 다른 일부는 판매 된 파운드의 양을 관리합니다. 우리는 또 다른 고객을 찾을 때마다 여러 개의 필드를 추가하고 여러 필드를 제거한 다음 각 솔루션을 최신 일반 릴리스로 유지하는 데 몇 시간을 소비합니다.
리포지토리 클래스를 팩토리 패턴에 넣을 수 있다고 생각 했으므로 고객 유형을 알면 어떤 필드를 사용할 지 알 수있었습니다. 실용적인? 더 좋은 방법? 웹 양식은 레이아웃에있는 필드를 반영하도록 수정 된 사용자 정의 컨트롤을 사용합니다. 현재 레이아웃에서 발견 된 입력란을 제품 표에있는 입력란에 '참여'한 다음 일반 입력란을 CRUD합니다.
이전 질문 내용 :
우리는 같은 개체에 대해 서로 다른 클래스를 허용하는 EAV/CR 데이터 모델이있다. 이것은 고객이 거칠게 다른 제품을 가지고있는 제품을 추적합니다. 고객은 제품의 "클래스"를 정의하고 필드로로드 한 다음 데이터로 채울 수 있습니다. 예를 들어,
Product.Text_Fields.Name
Product.Text_Fields.VitaminEContent
이 주위에 저장소 패턴을 포장하는 방법에 대한 어떤 제안?
필드 이름과 데이터 형식을 나열하는 Product 테이블, 값 테이블 및 메타 테이블 (Product.Price 및 Product.Price와 같은 다른 테이블이 있으므로 데이터 형식을 나열 함)의 세 테이블 EAV가 있습니다. Product.Photo와 같은 다른 메타 데이터와 함께 메타 데이터) 고객은 경쟁 업체의 할인율 차이와 플라이 계산과 같은 모든 종류의 가격을 추적합니다.
현재 Linq에서 C#으로 SQL을 사용하고 있습니다.
편집 :
나는 아래 "동적 쿼리"Linq를 좋아합니다. 우리 DB의 아이디어는 라커룸 보관함과 같습니다. 각 운동 선수 (또는 고객)는 자신이 원하는 방식으로 자신의 사물함을 구성하고 우리는 그것을 보관합니다. 우리는 사물함에 무엇이 필요한지 상관하지 않습니다.
매우 흥미 롭습니다 ... 저장소로 전달 된 개체가 동적 일 수 있습니까? 이것은 거의 공장 패턴과 거의 같습니다. 고객이 자신의 클래스 정의를 텍스트 파일에 넣은 다음, 상속하여 DB에 저장할 수 있습니까?