Dapper.net을 사용하기로 결정한 이유는 맵핑, 나는 별다른 생각이 필요하지 않기 때문에 데이터웨어 하우스와 객체 사이의 매핑을 처리하는 것이 지루합니다.
내 문제 :
나는이 클래스가 있다고 가정 해 봅시다.
class Foo{
int ID;
string Name;
}
class Bar : Foo{
string FavoriteMoovie;
}
그리고이 테이블들 :
Foo
- ID
- Name
Bar
- FooID
- FavoriteMoovie
그래서 나는 같은 쿼리에서 Foo와 Bars를 어떻게 선택할 수 있는지 알고 싶습니다.
지금까지 나의 유일한 생각은
"Query"메서드의 오버로드를 사용할 수 없습니다. 매핑 관계에 대해서만 있기 때문입니다.
매우 해키하지만 이것은 아마도 작동합니다.
db.Query<Bar, object, Foo>("select * from Foo left join Bar on FooID = ID",
(bar,ignore) =>
bar.FavoriteMoovie == null ? bar : new Foo{ID = bar.ID, Name = bar.Name});
단점은 그것이없이 할 수있는 몇 가지 중간 개체를 만듭니다.
다른 옵션은 Bar
객체를 선택하고 동일한 트릭을 사용하여 Foos를 필터링하거나 동적을 선택한 다음 올바른 클래스로 변환하는 것입니다.
개인적으로 나는 이것을 처리하기 위해 두 번 쿼리하지 않을 것입니다. NULL
FavoriteMoovie를 허용하지 않는 한, 쿼리를 복잡하게하거나 두 번 선택하는 것 외에 다른 선택의 여지가 없습니다.