asp.net mvc 프로젝트에서 SQL 쿼리 스크립트를 어떻게 관리 할 수 ​​있습니까?

asp.net-mvc c# config dapper sql-scripts

문제

이제 Dapper를 사용하여 데이터를 처리했습니다.

같은 코드 :

using(var connection = new SqlConnection(ConfigurationManager.AppSettings["MyConnectString"])
{
     var sql = string.Format(
         @"SELECT [Column1]
             FROM [MyTable]
            WHERE [Column3] > {0}
              AND [Column4] < {1}"
         , myValue1
         , myValue2
     );
     var result = connection.Query<long>(sql).ToList();
}

내 프로젝트는 위와 같이 많은 SQL 스크립트를 작성합니다.

나는 파일 (아마도 QueryAccount.config, QueryOrder.config, (XML 형식) ... 또는 다른 것들에 스크립트를 작성하고 싶다 ...)

그런 다음 파일에서 스크립트를로드 할 수 있습니다 ...


내가 원하는 것은 내 스크립트를 파일에 작성한 다음 파일에 같은 클래스를 씁니다. (예 : Product.config의 모든 쿼리 제품 스크립트와 Order.config의 모든 쿼리 Order 스크립트 작성) 그런 다음

var cmd = MyCommandManager.GetScript("QueryProduct");
cmd.SetParam("@ProductId", 123);
cmd.SetParam("@InvoicingDate", DateTime.Now(-7))
...

다음과 같은 스크립트 파일 :

SELECT [ProductName]
FROM [Product]
WHERE [ProductId] = @ProductId
  AND [InvoicingDate] = @InvoicingDate

인기 답변

downvoters을 무시하십시오. SQL은 항상 자체 파일에 있어야합니다. 이 파일의 확장자는 .config가 아니라 .sql이어야합니다. 따라서 VS SQL 편집기에서 편집 할 수 있습니다. 내가 생각하는 쿼리 당 하나의 파일을 원한다. 동일한 파일에서 다른 쿼리를 그룹화하면 아무 것도 얻을 수 없습니다. 이 파일들을 소비하는 .cs 파일 옆에 두는 것을지지하고, 함께 여는 파일을 함께 그룹화하며, 언젠가는 함께 삭제하려는 파일을 옹호 할 것입니다.

일단 생성되면, 솔루션 탐색기에서 Properties -> Build Action -> Embedded resource를 오른쪽 클릭하십시오. 그런 다음 MyCommandManager.GetScript () 메서드에서 GetManifestResourceStream ()을 사용하여 쿼리 텍스트에 액세스합니다. 스토어드 프로 시저와 비교할 때 이것은 호출 코드로 쿼리를 컴파일하는 큰 이점이 있으므로 스토어드 프로 시저 버전과 애플리케이션을 동기화하는 것에 대해 걱정할 필요가 없습니다.

이 모든 것이 많은 일처럼 보인다면, 그것은 다소 있습니다. 그렇기 때문에 아무도 그 일을하지 않습니다.하지만 그들은 다음과 같이해야합니다 :-) QueryFirst를 잡아라. 면책 조항 : QueryFirst를 작성했습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow