그래서 저는 TDD를 통해 데이터 액세스 계층을 만들었고 다소 우려에 접근했습니다. 차라리 잘못된 길을 시작하지 않기 위해 여러분들에게 내 생각이 깨끗한 건축물과 일치하는지 물어 보라고 생각했습니다.
내 데이터 액세스 계층 (DAL)의 방법은 매우 간단합니다. 그것들은 데이터베이스의 저장 프로 시저와 일치하며 (정리를 유지하기 위해 다른 방법으로 호출하지 않음) 프로 시저와 동일한 매개 변수를 포함합니다. 그런 다음 데이터베이스에 연결하고 쿼리 결과를 반환합니다. 예를 들면 다음과 같습니다.
public int DeleteRecord(int recordId)
{
recordId.RequireThat("recordId").NotZeroOrLess();
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter { ParameterName = "@RecordId", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Input, Value = recordId});
return this.ExecuteNonQuery("DeleteRecord", parameters.ToArray());
}
결과 집합에서 의미있는 작업을 수행하지 않기 때문에이 유형의 방법에 완벽하게 작동합니다. 명령이 작동하는지 확인하고 싶기 때문에 영향을받는 행 인 비 쿼리의 결과를 반환하고 해당 숫자를 사용하여 논리를 확인할 수 있습니다.
그러나 다른 DAL 방법에서는 레코드를로드하고 싶습니다. 내 부하 절차를 수행 할 것입니다 selects
테이블의 무리와 반환에 대해 DataSet
,하지만 난 비즈니스를 만들어야 내 DAL은을 사용하는 방법 내에서 개체 여부와 싸우고 있어요 DataSet
, 또는 내 비즈니스 개체 경우 스스로 그냥해야 Load()
을 얻는 방법을 DataSet
DAL에서 기본적으로 채워집니다.
DAL을 통해이를 수행하면 Business Objects에서 논리가 줄어들게됩니다 (이것은 단지 논리 일 뿐이지 만 여전히 논리 임). 하지 마라.
너희들은 어떻게 생각하니?