2013-03-29 2 views
0

SQL 쿼리를 인수로 사용하여 결과로 데이터를 제공해야하는 함수를 작성하려고합니다. 그래서이 함수가 보편적 구조를 결과물로 제공하기를 바랍니다. DataTable 또는 SqlDataReader을 반환하는 가장 좋은 방법 일 수 있습니까?
그런 다음 데이터를 추출하여 특수 유형 (다른 모델 클래스)의 객체에 넣으시겠습니까?데이터베이스에서 데이터를 반환하는 유니버설 유형

일부 패턴이 존재할 수 있습니까?

+0

왜 Entity Framework 같은 것을 사용하지 않습니까? –

+0

더 많은 쿼리를 제어하기 위해 SQL을 작성하고 싶습니다. ORM은 중복 쿼리를 생성 할 수 있습니다. 그게 왜. – Oleg

+0

여기에 대한 답을 바탕으로이 질문은 너무 모호합니다. 알 수없는 유형의 오브젝트를 리턴하는 단일 일반 Query 명령을 왜 원하는지 설명하기 위해 질문을 확장 할 수 있습니까? 코드 예제가 있습니까? –

답변

2

개체에 값을 직접 반환 할 수 있습니다. 그러나 당신은 여전히 ​​그들을 결국 무언가에 매핑시킬 필요가 있습니다.

일반적으로 이러한 종류의 '일반적인'사용에는 문자열로 전송되는 모든 것이 표시됩니다. JSON이 궁극적으로 어딘가 다른 곳으로 사용될 때까지 모든 종류의 문자열로 직렬화되는 방식의 종류.

DataTable을 사용하든 다른 것을 사용하든 관계없이 실제로 데이터를 유용하게 변환하는 방식에 완전히 의존하게되므로 결국 중요하지 않습니다.

해당 방법에 대한 추가 정보를 보려면 http://en.wikipedia.org/wiki/NoSQL 페이지를 살펴보십시오.

마틴 파울러 (Martin Fowler)는 올해 초 스키마와 NoSql에 대한 프리젠 테이션을 통해 재미있는 것을 발견했습니다. http://www.youtube.com/watch?v=8kotnF6hfd8

나는 여기에 다른 답변을 되풀이 하겠지만 가장 일반적인 것은 '일반적인'또는 '보편적 인'일을하지 않는 것입니다. 시스템을 자신이하고 싶은 일에 정확하게 맞추고 필요에 따라 시스템을 변경하기 위해 일부 작업을 시작하십시오.

+0

JSON은 데이터를 전송하는 데 적합하지만 SQL 결과 처리를 위해 DataTable (또는 더 세련된 모델)보다 강력하지 않으므로 SQL -> ?? -> JSON –

+0

에 따라 다릅니다. 단일 페이지 앱을 작성하고 JSON의 모든 데이터를 일종의 NoSQL 저장소에 캐싱하는 경우 모든 JSON이 통과 될 수 있습니다. 제 생각에 요점은 단지 json과 같은 '타입이없는'구조조차도 어떤 점에서는 구조를 가지고 있다는 것입니다. 왜냐하면 여러분은 그것들을 무언가에 묶어야하기 때문입니다.나는 제안되는 것과 같은 해결책을지지한다고 생각하지 않지만, 검색을 위해 'generic'이되는 것을 보았을 때 전송 메커니즘은 문자열 인 것 같습니다. –

+0

어쨌든 +1은 "DataTable을 사용하든 다른 것을 사용하든 실제로 궁극적으로 데이터를 어떻게 유용하게 활용할 수 있는지 궁극적으로 궁극적으로 끝나기 때문에 중요하지 않습니다." - 최종 목표 만이 궁극적으로 중요하다고 말할 수 있습니다. –

1

방금 ​​시작한 것 같습니다. Entity Framework Code First 나 NHibernate와 같은 ORM을 고려하거나 DB에 대해 베어 SQL을 실행하는 것보다 나열 할 수있는 MicroORM을 고려하는 것이 좋습니다.

EF 코드 우선은 초보자에게 유용합니다.

http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

으로 ORMs 당신이 당신의 데이터베이스의 테이블에 매핑되는 클래스를 정의하고 명시 적으로 (반환해야하는지의 문제를 해결하는) 이러한 개체의 목록을 요청할 수 있습니다.

+0

코드 우선은 "15 분짜리 블로그"에 적합하지만 그렇지 않으면 모델입니다. * 올바른 * 툴링을 처음 사용하는 것이 좋습니다. –

+0

@pst 괜찮습니다. 우리 모두는 선호합니다. Code First는 마이그레이션과 관련하여 훨씬 더 유연한 것으로 나타났습니다.하지만 NHibernate가 유일한 방법이기 때문에 우리 모두를 싫어한다고 말할 수있는 사람을 찾을 수있을 것입니다. –

+0

@pst 네 - EF의 장점을 어느 정도 배워야 만합니다.하지만 지금은 5 가지 정도의 프로덕션 어플리케이션을 사용하고 있습니까? 매우 행복합니다. 그러나 다시 - 나는 우리에게 PicoORM이 최고라고 말해 줄 누군가를 찾을 수있을 것이며 우리는 둘 다 바보가 될 것이라고 확신합니다. –

0

반환 유형으로 C# dynamic을 사용할 수 있습니다. ORM으로 Dapper을 사용하는 것이 좋습니다. 빠르고 쉽게 사용할 수 있으며 쿼리에서 동적 특성을 반환하는 기능이 있습니다. '쿼리를 실행하고 동적 개체 목록에 매핑'섹션을 참조하십시오.

+0

나는'객체'를 추천하는만큼'dynamic'을 사용하는 것을 권장합니다. 대부분의 경우 - ick! 또한 데이터 테이블의 동적 측면 (예 : 데이터가 동적 쿼리를 통해 0..n 열로 겹쳐서 표시되는 경우)에서 손실됩니다. –

+0

Microsoft .NET 팀의 위대한 사람들의 마음에 질문하는 사람은 누구입니까? Oleg는 자신이 '보편적 구조'라고 부르는 것을 원하며 역동적 인 것은 내 세계에서 그가 찾고있는 것입니다. –

+0

'동적 '은 질의 등에 따라 직렬 처리가 가능한'IEnumerable '을 허용 할 수 있지만, 실제로는 테이블 형 데이터를 다룰 때 DataTable (DataTable/DataSet이 훨씬 적음)보다 동적입니다. –

관련 문제