나는 현저한 문제가있을 때까지 최신 기술을 사용하는 것으로 전환 할 수 없기 때문에 사장님과 함께 하하하하고 있습니다. 주요 관심사 중 하나는 리포지토리가 연결을 처리하는 방법입니다. 가장 큰 오버 헤드 중 하나는 데이터베이스에 연결하거나 데이터베이스와의 연결을 끊는 것입니다. 내 컨트롤러 액션에 _contractsControlRepository.ListContractCostCentres(2)
라고하면 이제저장소 연결 풀링
public IEnumerable<COContractCostCentre> ListContractCostCentres(int contractID)
{
string query = "SELECT C.ContractID, C.CCCode, MAC.CostCentre, C.Percentage FROM tblCC_Contract_CC C JOIN tblMA_CostCentre MAC ON MAC.CCCode = C.CCCode WHERE C.ContractID = {0}";
return this.ExecuteQuery<COContractCostCentre>(query, contractID);
}
: 같은 기능을
public class ContractsControlRepository : DataContext, IContractsControlRepository
: 그래서 같은 클래스
public ContractsControlRepository()
: base(ConfigurationManager.ConnectionStrings["AccountsConnectionString"].ToString()) { }
: 나는 다음을 수행 저장소가있는 경우 즉시 저장소에 대한 또 다른 호출이 이어지며 동일한 연결을 사용합니까? 컨트롤러에서 언제 연결이 열립니까? 언제 닫습니까? 그의 ASP.NET MVC book에 Steve Sanderson에 의해 제안 내가 손으로 쓴 LINQ를 사용하고
건배
편집 할 수 있습니다.
편집 편집
내가 내 ORM로 LINQ를 사용하고, 명확히하기 위해,하지만 (위의 추출물에서와 같이) 나는 쿼리에 대한 원시 SQL 쿼리를 사용하고 있습니다. 예를 들어 컨트롤러 동작은 다음과 같습니다.
public ActionResult EditBusiness(string id)
{
Business business = _contractsControlRepository.FetchBusinessByID(id);
return View(business);
}
연결을 열거 나 닫을 수 없습니다.
public class ContractsControlRepository : DataContext, IContractsControlRepository
{
public ContractsControlRepository()
: base(ConfigurationManager.ConnectionStrings["AccountsConnectionString"].ToString()) { }
public IEnumerable<COContractCostCentre> ListContractCostCentres(int contractID)
{
string query = "SELECT C.ContractID, C.CCCode, MAC.CostCentre, C.Percentage FROM tblCC_Contract_CC C JOIN tblMA_CostCentre MAC ON MAC.CCCode = C.CCCode WHERE C.ContractID = {0}";
return this.ExecuteQuery<COContractCostCentre>(query, contractID);
}
는 다음 ContractsControlRepository 내 컨트롤러 인스턴스화 _contractsControlRepository.ListContractCostCentres처럼 사용된다 (2) :
여기 내 REPO의 더 큰, 더 완전한 추출물입니다. 연결은 수동으로 열리지 않으며, DataContext는 그 연결을 처리합니다.
저장소 코드를 생성하는 데 사용하는 항목에 따라 다릅니다. 그렇다면 어떤 ORM 소프트웨어를 사용하고 있습니까? – blowdart
@ Kezzer- 그 책을 가지고 있고 Steve는 그의 LINQ to SQL 모델에서 끌어서 놓기와 반대되는 특성을 사용하지만 책에서 인라인 SQL을 사용하는 곳은 어디에도 없습니다. 이 책에서 쿼리는 LINQ를 사용하여 작성됩니다. – RichardOD
나는 알고 있지만 우리 시스템의 요구 사항은 LINQ to SQL을 사용하여 SQL 쿼리를 생성하지 않는 것입니다.LINQ to SQL을 ORM 도구로 사용하고 쿼리를위한 인라인 쿼리를 사용합니다. 사장님이 그렇게 말씀 하시니까요. 나는 그것에 동의하지 않는다, 나는 그에게 LINQ to SQL 쿼리가 직접적인 SQL 쿼리보다 느리지 않다는 것을 증명할 때까지는 선택의 여지가 없다. – Kezzer