2016-12-29 6 views
0

쿼리 결과를 강력한 형식으로 입력하기 위해 C#의 클래스에 쿼리를 자동 매핑하는 방법이 있습니까? 필자는 더 이상 열 이름을 수동으로 지정하여 DataTable을 사용하여 쿼리 결과에 액세스하고 싶지 않습니다.SQL 쿼리 결과를 엔터티 (C#)로 매핑

+1

엔티티 프레임 워크를 사용하거나 다른 ORM –

답변

1

내가 가장 좋아하는 질문. QueryFirst을 사용하십시오. SQL 편집기 창에 SQL을 작성하고 입력 할 때 유효성이 검사 된 구문을 입력하면 QueryFirst는 강력하게 형식화 된 입력 및 출력을 사용하여 C# 래퍼를 생성하여 실행합니다. 그리고 많은 다른 이점들이 있습니다 :-) SqlServer, MySql 및 Postgres 지원이 내장되어 있습니다. 면책 조항 : QueryFirst를 작성했습니다.

+0

도구가 내 필요에 완벽하게 보이지만 테이블이 쿼리 결과로 가득 차더라도 모든 클래스가 생성되지 않는 이유는 무엇입니까? – CRK

+1

빈 클래스를 어떻게 의미합니까? 도구를 설치 했습니까? 디자인 타임 및 런타임 데이터 소스를 만들었습니까? 실행중인 쿼리를 작성 했으므로 생성 된 래퍼 및 poco를 검사 할 수 있습니까? Execute()를 호출하고 빈 인스턴스를 가져 왔습니까? 얼마나 많이? – bbsimonbb

+0

Microsoft SQL Server – CRK

2

당신은 AutoMapper을 봐야합니다. DataTable을 사용자의 List<object>으로 매핑하는 것은 쉽고 사용자에게 친숙한 방법입니다.

그것에 대해 이야기하는 기사 (샘플 코드 포함) here을 찾을 수 있습니다.

프로세스를 자동화하려면 사용중인 DataTable마다 특정 클래스를 만들 필요가없는 dynamic 개체를 사용할 수 있습니다.

희망이 도움이되었습니다! - 강력하고 헤비급

EntityFramework :

+0

안녕하세요, 답변 해 주셔서 감사합니다. 나는 당신이 그가 DataTable의 Column과 일치하는 Class를 생성하라고 지시하면서 articile에서 프로세스를 자동화하고 싶다. 그러나 자동으로 (클래스를 수동으로 생성하지 않고) 그것을하고 싶다. – CRK

+0

@CRK 업데이트 된 답변보기 – Nathangrad

+0

좋습니다.하지만이 모든 것이 런타임에 모두 가능합니까? 따라서 DataTable을 강력하게 입력 할 수는 없습니다. – CRK

3

옵션의 몇 가지가있다. https://msdn.microsoft.com/en-us/library/aa937723(v=vs.113).aspx

Dapper - 경량 - 그것은 기본적 connection 개체에 대한 확장 메서드를 추가하는 것 당신이 등 저장 프로 시저, 쿼리의 매핑이 필요하면 대부분 https://www.codeproject.com/Articles/212274/A-Look-at-Dapper-NET

을 매퍼, 말끔 해가 갈 좋은 방법입니다. 그것은 엔터티 프레임 워크로 데이터베이스 등을 만들 수는 없지만 모두 정말로 필요에 의존합니다.

+0

Dapper를 사용하여 쿼리 결과에서 클래스를 자동으로 만드는 방법은 무엇입니까? – CRK

+0

아무것도 당신을 위해 그것을 할 수 있습니다. 아무리 좋은 습관이 아니기 때문에. 기존 데이터베이스를 기반으로 클래스를 생성 할 수 있습니다 (단, 런타임에서는 실행되지 않습니다). 요즘 클래스를 생성하고 EF를 사용하여 다른 방식으로 데이터베이스를 생성해야합니다. – MadOX

+0

"런타임에 없음"이라는 사실이 좋습니다. 이 방법으로 강력한 DataTable을 입력 할 수 있습니다. 런타임에 클래스를 만들면이 작업을 수행 할 수 없습니다. 난 괜찮아? ORM의 – CRK

0

dB로 LINQ에 도움이 라이브러리가있다

"DB에 LINQ이 POCO 개체와 데이터베이스 사이의 빠르고 간단한, 빛을 제공하는 가장 빠른 LINQ 데이터베이스 액세스 라이브러리 및 유형 안전 계층입니다."

https://github.com/linq2db/linq2db

+0

디자인 타임에 클래스를 생성합니까? – CRK

+0

아니야 ... 여기 yry는 당신이 찾고있는 것에 대한 이야기입니다. http://stackoverflow.com/questions/2464909/generate-poco-classes-in-different-project-to-the-project-with-entity -framework – Ggalla1779