login register Sysop! about ME  

2018년 10월 31일 11시 59분 00초,     조회수 : 154
  제목 : db에서 값을 읽어 오기전에 where method에서 확장메서드를 사용할 수 있을까요?
SEQ : 34615 글쓴이 : rjsahvos

작성 포맷 : TEXT 모드, 자동 줄바꿈 사용

where method 에서 확장 메서드를 이용하면.. 아래처럼 나오는데요..
추가 정보: LINQ to Entities에서 'Boolean aaa(System.Object, System.String)' 메서드를 인식하지 않으므로 이 메서드는 
저장소 식으로 변환될 수 없습니다.

dbset where method에서 확장메서드를 사용할 수 있으면 참 편하고 좋을거 같아서 방법을 찾아보는데.. 쉽지가 않아서 
이렇게 문의 드립니다

  wind1379
  2018-11-01(09:13)
캐릭 이미지
확장 메서드 가능한걸로 알고 있습니다만...
작성하신 코드를 올려주세요... [Mr.NET!]

  rjsahvos
  2018-11-01(10:06)
//확장메소드(그냥 예제로 봐주세요^^)
public static bool EqualsIgnoreCase(this string target, string value)
{
StringComparison comparison =
StringComparison.CurrentCultureIgnoreCase;
if (string.IsNullOrEmpty(target)) target = string.Empty;
return target.Equals(value, comparison);
}

  rjsahvos
  2018-11-01(10:06)
//dbcontext
//이것처럼 AsEnumerable 이후에는 확장 메소드 쓰는데 문제 없습니다.
siteContext.Details.AsEnumerable().Where(w =>
w.Code.EqualsIgnoreCase("ABC"));

//이것처럼 dbset where 절에 사용을 하면 위에 말씀드린 것처럼 오류구요.
siteContext.Details.Where(w => w.Code.EqualsIgnoreCase("ABC"));

이런것도 똑똑하게 자동변환 해주면 좋을텐데..ㅎ
저는 안되는걸로 어제까지 파보고 결정을 내렸는데.. 방법이 있으면 좋겠습니다^^

  wind1379
  2018-11-01(11:32)
캐릭 이미지
위와 같은 상황이라면 좀 애매 합니다...
첫번째... AsEnumerable 호출이 되었다면 DB에서 전체 결과를 리턴하므로 좋지 않은 방
법이구요...
두번째... 에러 나는 상황은... where 내부를 SQL 쿼리문으로 변환시 나는 에러 라고 하
네요...
이래 저래... 상황은 좋지 않네요...
아래에 링크 하나 남겨드리겠습니다.
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/ef/language-
reference/how-to-call-model-defined-functions-in-queries

...[Mr.NET!]


  rjsahvos
  2018-11-01(11:57)
네~ 감사합니다


제목 작성자 날짜 조회
db에서 값을 읽어 오기전에 where method에서 확장메서드를 사용할 .. (5) rjsahvos 2018-10-31 154

 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})