상속 및 Dapper.net

dapper

문제

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를 허용하지 않는 한, 쿼리를 복잡하게하거나 두 번 선택하는 것 외에 다른 선택의 여지가 없습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow