날씬한. IoC, 테스트 및 아가사

agatha-rrsl dapper inversion-of-control testing

문제

MVC 3 프로젝트에서 EF4, IoC 및 Agatha-RRSL을 서비스 레이어로 사용하고 있습니다.

다행히도 이번 주에 나는 Dapper를 찾았고 EF4에서 Dapper로 이동 중입니다!

보통 Agatha 요청 처리기에 Generic Repository를 삽입합니다 ...

Dapper는 어떻게 사용해야합니까?

1) Agatha Handler에 IDbConnection을 삽입해야합니까? 그런 다음 처리기 내부에서 Dapper Query 또는 Dapper Execute와 함께 사용합니까? 이게 쓸만 해? 조롱하는 것은 어떨까요?

2) Dapper를위한 일반 저장소를 생성해야합니까? 아마도 저장소는 다음과 같이 될 것입니다.

using (SqlConnection connection = new SqlConnection(connectionString)) {
 connection.Execute(@"insert Roles(Name) values (@name)", new { name = "Role" }); 
}

그리고 IDbConnection이 여기에 주입됩니다.

그리고 저장소는 핸들러 내부에 삽입 될 것입니다.

이걸 어떻게 테스트 할 지 모르겠다 ...

3) 모든 코드를 핸들러 안에 두어야합니까?

using (SqlConnection connection = new SqlConnection(connectionString)) {
 connection.Execute(@"insert Roles(Name) values (@name)", new { name = "Role" }); 
}

그러나 테스트는 어떨까요?

4) Dapper가 정적 메서드를 사용한다는 것을 알고 있습니다. 이 문제로 메모리 문제가 발생하지 않습니까?

너무 많은 질문에 대해 유감스럽게 생각합니다 ... 나는이 권리를 얻으려고 노력하고 있습니다.

고마워, 미구엘

인기 답변

늦게 대답하지만 저장소 구현은 실제로 "데이터 액세스 객체"임을 지적하고 싶습니다. 리포지토리는 전체 집계를 처리합니다. 함께 속한 그룹. 이상적으로 인터페이스는 집계 루트 유형의 객체 만 수락하고 반환해야합니다 (예 : Repository<User> 에는 void Update(User user) {} 또는 IEnumerable<User> Find(...) {} ) 메소드가있을 수 있음).

지속성 메커니즘의 사용 또는 존재는 구현 세부 사항이며 일반적으로 저장소 인터페이스에 속하지 않으며 SQL을 사용하지도 않습니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.