2011-03-15 3 views
2

평범한 구식 ado.net의 DataReader를하고 DataTable의를 사용하여 대 다음을 수행 성능 저하가 있는지 궁금 해요 :엔티티 프레임 워크 실행 sprocs가 네이티브 쿼리 성능 고려

using(DBEntities dbEntities = new dbEntities) 
{ 
    ObjectResult<tblCustomers> customers = 
     dbEntities.ExecuteStoreQuery<tblCustomers>("SELECT name,id FROM tblCustomers"); 
} 

또한 sprocs가 실행하고 싶습니다 dbEntity를 사용합니다.

나는 성능이 중요한 응용 프로그램을 개발 중이지만 여전히 엔티티 프레임 워크를 사용하고자하기 때문에이를 언급합니다.

게다가, 누구든지 최신 성능 테스트를 가리킬 수 있습니다 엔터 프라이즈 컴파일 된 쿼리를 linq .net 4.0에?

편집
나는 내가 수동으로 .NET 개체로 각 행에서 얻을 결과를 삽입 할 계획 ado.net로 이동합니다. 따라서 엔티티 프레임 워크 storequery/sproc vs ado.net + .net 객체에 수동으로 데이터를 만들고 삽입하는 것입니다.

답변

2

예. 물론 이것은 일반 ADO.NET/SQL보다 높은 수준의 접근 방식입니다.

SQL 쿼리를 보내고 tblCustomers 개체의 목록을 가져옵니다. 라인을 따라 어딘가에, 데이터베이스의 행/열에서 객체로의 매핑이 일어나고, 이것은 약간의 시간이 걸린다.

다른 한편으로는 - 같은 일을 직접하고 싶다면 성과 페널티를 지불해야합니다. 아니면 이전 스타일의 행/열을 사용하여 작업하십시오 (아니요, 권장). !).

고전적인 "편의 대 성능"트레이드 오프 - 당신에게 더 중요한 것은 무엇입니까? 멋진 C# 개체와 그 속성으로 프로그래밍 할 수 있고 프로그래머로서 매우 생산적 일 수 있습니까? 아니면 데이터베이스의 SELECT에서 몇 나노초입니까? 그것은 당신의 선택이에요 ....

+0

내가 ado.net과 함께 간다면 물론 결과를 삽입 할 계획 일 것입니다, 아마도 내가 충분히 명확하지 않았을 것입니다, 나는 쿼리 자체를 실행하는 것에 대한 성능 저하를 의미했습니다. 그것을 개체로 변환하는 데 걸리는 시간입니다 (언급 한대로 무시할 수 있습니다). – dortzur

+0

@dortzur : 나는 이것을 뒷받침 할 숫자가 없지만 Microsoft는 가능한 한 빨리 이러한 작업을 수행하기 위해 Microsoft에서 능력을 발휘할 것이라고 생각할 수 있습니다. 일반적으로 "스스로해라"는 것은 거의 없습니다. - 범용 접근법이 가질 수없는 시스템에 대한 정보를 이용할 수 없다면 말입니다. –

+0

@dortzur :이 코드는 ADO.NET 연결과 데이터를 가져 오는 DataReader를 사용한다는 것을 확신합니다. 실제로는 이보다 더 빠를 수 없습니다 .... –