상황은 엔터티를 모델링하는 테이블이 있습니다. 이 엔터티에는 여러 속성 (각 속성은 테이블의 열로 식별 됨)이 있습니다. 문제는 앞으로 새로운 속성을 추가하거나 속성을 제거해야한다는 것입니다. 문제는 데이터베이스와 해당 코드 (C# 사용)를 모두 모델링하여 그러한 경우에 새로운 속성을 "소유"하는 것이 매우 쉽다는 것입니다.일반 및 데이터베이스 - 디자인 문제
처음에는 속성이 하나 뿐이므로 한 개의 열만있었습니다. 클래스의 해당 속성을 적절한 형식과 이름으로 정의한 다음이를 읽고 수정하는 저장 프로 시저를 만들었습니다. 그런 다음 신속하게 복사 붙여 넣기, 두 번째 속성 변경, 이름 및 유형 변경, 그리고 약간의 SQL이있었습니다. 분명히 이것은 앞으로 적합한 모델이 아닙니다. 이번에는 ORM (EF 또는 다른 것)을 제안 할 수도 있습니다. 왜냐하면 이것이 SQL과 코드를 자동으로 생성 할 것이기 때문입니다. 그러나 현재로서는 이것이 나를위한 옵션이 아닙니다.
하나의 속성 (속성 이름)을 읽는 절차와 이름 및 값으로 업데이트하는 절차가 하나만 있다고 생각한 다음 동일한 문에서 엔터티에 대한 묶음 또는 모든 속성을 읽는 일반 절차 . 제네릭 사용을 고려해 볼 때 C#에서는 쉽게 들릴 수 있지만 데이터베이스는 제네릭을 알지 못하므로 강력한 형식화 된 솔루션을 사용할 수 없습니다.
저는 가능한 한 강력하게 형식화 된 솔루션을 갖고 싶습니다. 따라서 많은 캐스팅 및 구문 분석을 수행 할 필요가 없습니다. 코드에서 사용 가능한 속성을 정의하여 사용 가능한 문자열을 추측하지 않고 마법 문자열 등을 사용하지 마십시오. 그런 다음 시스템에 새 속성을 추가하는 과정은 테이블에 새 열을 추가하고 코드 (예 : 열거 형)에 새 속성 "정의"를 추가하는 것을 의미합니다.
EF를 사용할 수없는 이유는 무엇입니까? 마이크로 소프트의 천재들은 이미이 점에 대해 많은 것을 알고 있습니다. 나는 당신이 바퀴를 다시 발명하는 것을 싫어한다. – Jay
그래, 나는 왜 당신이 ORM을 피할 필요가 있는지 이해하지 못한다. (또한 C# generics가이 중 어떤 것을 수행해야하는지 전혀 알지 못합니다.) –
EF는 아키텍처와 관련하여 조금 더 멀리 떨어져 있지만 아직 사용할 수 없습니다. – CyberDude