일부 SQL 쿼리와 함께 MVC4 기반 프로젝트가 있습니다. 현재 프로젝트 리소스 (* .resx)에 저장되어 있지만 리소스 편집기에서 쿼리를 편집하는 것은 매우 어렵습니다.MVC 4에 SQL 쿼리를 어디에 저장해야합니까?
특수한 SQL 쿼리 저장소가 있습니까? 내 검색어는 어디에 저장해야합니까?
일부 SQL 쿼리와 함께 MVC4 기반 프로젝트가 있습니다. 현재 프로젝트 리소스 (* .resx)에 저장되어 있지만 리소스 편집기에서 쿼리를 편집하는 것은 매우 어렵습니다.MVC 4에 SQL 쿼리를 어디에 저장해야합니까?
특수한 SQL 쿼리 저장소가 있습니까? 내 검색어는 어디에 저장해야합니까?
ORM으로 Entity Framework를 사용하지 않는 이유는 무엇입니까?
ASP.NET MVC와의 링크에서 훌륭한 기술입니다.
또한 SQL을 MSSQL의 저장 프로 시저로 이동할 수 있습니다. 이 경우 데이터베이스 프로젝트를 사용하여 솔루션에 SQL을 저장하는 것이 좋습니다.
어쨌든 SQL을 코드 또는 리소스에 저장하는 것은 대단한 방법이 아닙니다.
엔티티 프레임 워크를 사용하지만 손으로 최적화 된 큰 쿼리가 많이 있습니다. – skayred
저장 프로 시저로 데이터베이스에 쿼리를 넣을 수 있습니다. 이것은 데이터베이스 논리의 캡슐화를 제공합니다 - '관심사의 분리'.
아니요, SQL 쿼리를위한 특수 저장소가 없습니다.
리소스 파일이 약간 이상하게 들리지만 데이터 레이어에 캡슐화 된 코드의 상수 문자열에 넣으려고합니다. 매개 변수가 적용되는 SQL 쿼리를 사용하는 각 메서드 내에서 가능합니다.
그러나 일반 SQL을 피하고 대신 Entity Framework 또는 LINQ2SQL을 사용하는 것이 좋습니다.
많은 양의 데이터에 대해 큰 쿼리를 많이 사용합니다. 성능 손실없이 EF를 사용할 수있는 확실성이 있습니까? – skayred
T4으로 해결했습니다. 지금 내 프로젝트에 Queries
디렉토리가 있고 그 안에 SQLGenerator.tt
디렉토리가 있습니다.
<#@ template debug="true" hostSpecific="true" #>
<#@ output extension=".cs" #>
<#@ Assembly Name="System.Core" #>
<#@ Assembly Name="System.Windows.Forms" #>
<#@ import namespace="System" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Diagnostics" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Collections" #>
<#@ import namespace="System.Collections.Generic" #>
<#var sqlScriptsContent = ReadSql(); #>
namespace MathApplication.SQL
{
public class Queries
{
<# foreach(var file in sqlScriptsContent) { #>
public string <#= file.Key #> = @"<#= file.Value #>";
<# } #>
}
}
<#+
public Dictionary<string, string> ReadSql() {
var filePaths = Directory.GetFiles(Host.ResolvePath("."));
var result = new Dictionary<string, string>();
foreach (var filename in filePaths) {
if (filename.EndsWith(".sql")) {
result[Path.GetFileNameWithoutExtension(filename)] = System.Text.RegularExpressions.Regex.Replace(File.ReadAllText(filename), @"\s+", " ").Replace("\"", "'");
}
}
return result;
}
#>
이 코드는 하나 개의 클래스에 Queries
디렉토리에있는 모든 *.sql
파일을 조립 : 여기 내 템플릿 소스 코드입니다.
왜 저장 프로 시저를 사용하지 않습니까? – Oded
일부 매개 변수를 저장 프로 시저에 전달할 수 있습니까? – skayred
예. 기본 기능입니다. – Oded