2015-01-13 5 views
1

저는 고정 된 길이의 char 데이터 유형을 사용하는 sql 레거시 데이터베이스 및 linq로 작업하는이 재발하는 문제를 보게됩니다. 나는 문자열을 반환하는 경우Linq에서 null이 아닌 경우 트림 문자열

은 항상 마지막에 패딩을 가지고 내가 선택 성명에서 두 문자열을 CONCAT하려면 항상 예를 ​​들어, null가 아닌 경우 그렇게 전에 확인해야합니다

return (from person in personRepository.Get(p => p.FIRSTNAME.StartsWith(firstName) 
     || p.SURNAME.StartsWith(surname) || p.DOB == dob) 
       select new PersonSearchModel 
       { 
        FullUserName = (person.SURNAME ?? "").Trim() + ", " 
           + (person.FIRSTNAME ?? "").Trim() + " " 
           + (person.MIDDLENAME ?? "").Trim() 
       }).ToList(); 

가 있는가 더 나은 접근법? 문자열을 자동으로 자르기 위해 데이터베이스 컨텍스트에서 사용할 수 있습니까?

+0

더 나은 approch 오히려 문자 데이터 형식보다 VARCHAR를 사용합니다 ... 그리고 설정 기본값은 ""데이터베이스 테이블에 ... –

+0

불행하게도 나는 그 옵션 : – Andrew

+0

당신은 쓸 수 권한이없는 SQL Server 사용자 지정 함수, 코드에 작은 저장을위한 많은 노력이 필요합니다. – DrKoch

답변

1

t4 템플릿이 변경되어 클래스가 자동으로 자르지 않은 문자열을 생성 했으므로 null이 아니면 null을 반환했습니다.

public string Property(EdmProperty edmProperty) 
{ 
    string type = _typeMapper.GetTypeName(edmProperty.TypeUsage); 
    string propertyName = _code.Escape(edmProperty); 

    if(type == "string"){ 

    return string.Format(
     CultureInfo.InvariantCulture, 
     "private {1} _{6}; {5} \t{0} {1} {2} {{ {5}\t\t{3}get{{return _{6} == null ? null : _{6}.Trim();}} {5}\t\t{4}set{{ _{6} = value;}} }}", 
     Accessibility.ForProperty(edmProperty), 
     type, 
     propertyName, 
     _code.SpaceAfter(Accessibility.ForGetter(edmProperty)), 
     _code.SpaceAfter(Accessibility.ForSetter(edmProperty)), 
     Environment.NewLine, 
     propertyName.ToLower() 
     ); 

    }else{ 
    return string.Format(
     CultureInfo.InvariantCulture, 
     "{0} {1} {2} {{ {3}get; {4}set; }}", 
     Accessibility.ForProperty(edmProperty), 
     _typeMapper.GetTypeName(edmProperty.TypeUsage), 
     _code.Escape(edmProperty), 
     _code.SpaceAfter(Accessibility.ForGetter(edmProperty)), 
     _code.SpaceAfter(Accessibility.ForSetter(edmProperty))); 
     } 
} 
+0

템플릿에 대해 더 많이 쓸 수 있다면 좋을 것 같습니다. 어디서 찾을 것이며, 어떻게 또는 어떻게 바꿀 것인가? – t3chb0t

관련 문제