2009-12-04 5 views
0

내가 원하는 것을 설명하기 위해 예제를 사용하고 싶다. 많은 드롭 다운 목록에 많은 테이블을 표시합니다. C#, asp.net-mvc, linq2sql

내가 DB 설계에 따라 한 가정 :

Item (id, name, categoryID); 
Category (id, name); 
사용자가 (양식을 작성), I는 드롭 다운리스트에서 범주의 목록을 제공합니다 및 사용자 중 하나를 선택할 때 항목을 만들려고

범주 ASP.NET MVC는 자동으로 categoryID를 선택한 항목에 바인딩합니다. 선택한 항목을 올바르게 편집 할 때 같은 드롭 다운 목록을 표시해야합니다.

질문 :하지만 내 DB는 매우 커서 30-40 (아마도 더 많은) 범주의 테이블이 필요하며 "id"와 "name"이 포함되어 있으며 모든 테이블을 표시해야합니다. 드롭 다운 목록에서 다른 개체를 만드는 동안 개체를 편집하는 동안 제시해야합니다. 테이블 이름이 다른 것만으로 같은 논리를 100 번 쓰기가 지루하기 때문에 스키마 위의 명확한 기능은 작동하지 않습니다. 모두 같은 테이블에 기반으로 뷰를 확인하고 응용 프로그램에서 나는 단지 하나의보기에서 건설 DropDownList로 그 함수를 호출 :

현재 내 솔루션은 (내가 Linq2SQL 사용하고 있습니다). 그러나 새 테이블을 추가 할 때마다 뷰 정의를 변경하는 일은 여전히 ​​지루합니다.

여러분은 반성이나 다른 기술을 사용하여 지루한 작업에 대한 더 나은 솔루션을 생각하십니까?

+1

왜 같은 구조의 테이블이 30-40 개입니까? (id, name) 왜 여러 테이블을 하나의 테이블로 압축하지 않습니까? – JOBG

+0

나쁘지 않은 생각. 나는 그것에 대해 생각하지 않았다. 그러나 모든 것을 하나의 테이블에 넣으면 DB 디자인이 직관적이지 않고 다른 사람들에게 이해하기 어려울 것입니다. 나는 더 나은 해결책을 찾을 수 없다면 아마 이것을 시도 할 것이다. 감사. –

+0

방금 ​​전부터 작동하지 않는다면, 세 번째 콜럼을 추가하여 어떤 테이블을 찾아야할지 (카테고리 테이블인지 또는 다른 카테고리와 유사한 테이블인지) 알아야합니다. 그리고이 경우에는 항목만으로는 액세스 할 수 없습니다. 범주. –

답변

0

해결책에 관심이있는 사람 : 이 문제를 해결하기 위해 리플렉션을 사용했습니다. DataContext를 통해 리플렉션을 사용하여 (문자열 이름을 기준으로) 테이블을 가져 와서 해당 필드를 가져와 옵션 목록을 생성합니다.

1

"전혀 다른 테이블 이름을 사용하여 같은 논리를 100 번 쓰는 것이 지루하기 때문에 스키마 위에는 확실히 작동하지 않습니다."

내가 당신이라면 "부분 클래스"기능을 사용하여이 클래스에 추가 인터페이스를 표시합니다. 그런 다음 부분 클래스에 대한 몇 가지 확장 메서드를 작성합니다.

관련 문제