0

나는 인터넷 사용자들에게 서비스를 제공하는 인터넷 웹 사이트에서 일하고 있습니다. 비즈니스 팀의 협력자가 원하는 정보를 얻을 수있는 관리 시스템이 있습니다. 지난 3 일 동안 신규 사용자가 몇 명이나 되었습니까? 또는 "농담"태그 등으로 게시 된 기사 수를 표시합니다. 따라서 관리 시스템에는 조건이있는 일부 표를 검색하기위한 몇 페이지가 있습니다. 이 페이지들은 매우 비슷합니다.이렇게 많은 기준이 있습니다.


UserID : [------------] 등록 된 시간 [BEGIN] ~ [END] [검색]


때 검색 결과는


User 단지보다 더 많은 속성이 클래스 다음과 같습니다 사용자 ID/닉/RegisterTime (뿐만 아니라 사용자 표)이지만 3 개의 속성 만 조건으로 처리됩니다. 그래서 나는 UserSearchCriteria 클래스 등이 있습니다

public class UserSearchCriteria 
{ 
    public long UserID { get; set; } 
    public string NickKeyword { get; set; } 
    public DateTime RegisteredTimeStart { get; set; } 
    public DateTime RegisteredTimeEnd { get; set; } 
} 

그런 다음 데이터 액세스 레이어에서, 검색 방법은 유형 UserSearchCriteria으로 인수 소요되며, 쿼리 해당 Expression<Func<User, bool>>을 구축 할 수 있습니다. theDAL 밖에서 다른 개발자는 기준에 의해 제공된 3 가지 조건 만 사용하여 사용자 테이블을 검색 할 수 있습니다. 예를 들어 City 속성이 "New York"인 사용자를 검색 할 수 없습니다 (일반적으로이 속성은 색인이 없기 때문입니다) DB에서 그것으로 검색하는 것은 느리다).

질문 1 : 검색을 포함하는이 구현은 정확하거나 옳지 않습니까? 어떤 제안?

질문 2 : 지금 나는 등 ArticleSearchCriteria, FavouriteSearchCriteria과 같은 프로젝트에 더 기준 클래스를 발견하고 기준이 내가 생각하는 미래에 점점 더 될 것입니다. 그들은 거의 동일한 작동 메커니즘을 가지고 있지만 코드를 반복해야합니다. 더 나은 해결책이 있습니까?

P.이 정보가 필요한 경우 jQuery + ASP.NET MVC 3 + MongoDB

답변

0

나에게 이상적입니다. 사용자가 "아무것도"로 검색 할 수없는 경우 템플릿 별 검색 방식을 사용하는 것은 의미가 없습니다. 더 일반적인 것을 만들려고한다면 또한 혼란 스러울 것입니다.

class SearchCriteria{ 
    Dictionary<object,object> KeyValuePairs; 
    EntityKind Entity; 
} 

는 다음과 같이 사용할 수 :

SearchCriteria sc = new SearchCriteria(); 
sc.KeyValuePairs.Add("UserId",32); 
sc.Entity = EntityKind.User; 

우욱 예를 들어, 내가 좋아하는 뭔가 코드를 싫어한다. 컴파일 타임 형식 검사가 없으며 엔티티와 속성이 일치하는지 확인하지 않습니다.

그래서 내 대답은 예 :)입니다. 현재 사용중인 디자인 패턴을 사용합니다. 나에게 의미가 있으며, 당신이하고있는 일을보고 속도를 높일 수있는 사람은 누구나 쉽게 이해할 수 있습니다.