한 줄에 수백 줄의 레거시 SQL 문을 받았습니다. 각 SQL은 공유 된 Models
프로젝트에서 고유 한 POCO를 사용하여 코드에 매핑됩니다. 예를 들어전체 빈혈 -이 데이터를 내 모델에서 어디로 옮길 수 있습니까?
의 Models
프로젝트에 equivilent POCO을 가지고 Select Name, Birthday From People
는 SQL : 내 DAL에서
public class BirthdayPerson : SqlResultBase {
public string Name { get; set; }
public datetime Birthday { get; set; }
//SqlResultBase abstraction:
public string HardcodedSql { get {
return "Select Name, Birthday From People";
}}
}
, 나는 그 <T>
는 SQL의 POCO를 나타내는 하나의 범용의 SQL 주자 있습니다.
public IEnumerable<T> GetSqlResult<T>() where T : SqlResultBase, new() {
return context.Database.SqlQuery<T>((new T()).HardcodedSql);
}
문제는 내 Models
라이브러리 응용 프로그램을 통해 사용하는 것이, 그리고 그 HardcodedSql 속성에 응용 프로그램을 통해 노출 된 SQL을 원하지 않는 : 그래서 내 비즈니스 로직은 GetSqlResult<BirthdayPerson>()
를 호출 할 수 있습니다.
클래스에서 함수를 만들고 함수에서 결과를 반환하면 원시 변수를 사적인 변수에 넣고 모든 곳에 노출시키지 않으면 도움이되지 않을까요? –
거의 대단한 것 같습니다. 당신이 제안하는 것을 이해하는 한, 프론트 엔드가 여전히 메서드를 호출하고 노출 된 SQL을 읽을 수 있다고 확신합니다. – Suamere
당신은 그 가정에 맞을 것입니다 :) –