현재 중간 크기 웹 응용 프로그램의 프로토 타입을 작성 중이며 Entity Framework를 실험 해 보는 것이 좋습니다. 문제는 응용 프로그램의 주요 부분이 데이터 계층 및 논리가 아니기 때문에 Entity Framework를 사용할 시간이별로 없다는 것입니다. 반면에 데이터베이스 스키마는 매우 간단합니다.ADO.NET Entity Framework를 사용하여 "쿼리"작성을위한 엄지 손가락 규칙
내가 직면 한 문제 중 하나는 "쿼리 작성"에 일관된 방법을 찾을 수 없다는 것입니다. 엔티티에
- LINQ LINQ 확장 방법
- 법인 SQL
- 쿼리 빌더
처음 두 개는 본질적으로 동일하지만 유지 관리 및 일관성을 위해 하나만 사용하는 것이 좋습니다.
나는 그 중 누구도 완전하고 가장 일반적인 것 같지 않다는 사실에 당혹 스럽다. 나는 종종 자신을 궁지에 몰아 넣고 몇 가지 못생긴보고 조합을 사용하여 찾습니다. 내 생각 엔 Entity SQL이 가장 일반적인 것 같지만 문자열을 사용하여 쿼리를 작성하면 한발 뒤로 물이 듭니다. Entity Framework와 같은 것을 실험하고있는 주된 이유는 내가 컴파일 시간을 검사하는 것을 좋아한다는 것입니다.
일부 다른 임의의 생각/문제 :
- 나는 종종 또한 ObjectQuery.Include() 메소드를 사용하지만, 다시는 문자열을 사용합니다. 이것이 유일한 방법입니까?
- ObjectQuery.Execute() (ToList())를 사용할시기는 언제입니까? 실제로 쿼리를 실행합니까?
- 최대한 빨리 (예 : ToList()를 사용하여) 쿼리를 실행해야합니까, 아니면 처음 열거 형을 실행하도록 남겨 두어도 상관하지 않습니까?
- ObjectQuery.Skip() 및 ObjectQuery.Take()는 확장 메서드로만 사용할 수 있습니까? 페이징을 할 수있는 더 좋은 방법이 있습니까? 2009 년이며 거의 모든 웹 애플리케이션이 페이징을 다룹니다.
전반적으로 ORM을 구현할 때 많은 어려움이있는 것으로 알고 있으며, 종종 하나를 절충해야합니다. 반면에 직접 데이터베이스 액세스 (예 : ADO.NET)는 단순하고 간단하며 잘 정의 된 인터페이스 (표 형식 결과, 데이터 판독기)를 사용하므로 누구와 언제 작성하는지에 상관없이 모든 코드가 일관됩니다. 데이터베이스 쿼리를 작성할 때마다 너무 많은 선택을하고 싶지 않습니다. 너무 지루하고 다른 개발자가 다른 방법을 생각해 낼 수 있습니다.
엄지 손가락의 규칙은 무엇입니까?
"LINQ 확장 메서드를 사용하는 엔티티": LINQ-to-Objects를 의미합니까? LINQ-to-Entities가 확장 메서드를 사용하기 때문에 ... –
흥미로운 질문 - 나는 혼란에 빠지기 시작했습니다. 그러나이 문제의 핵심은 다음과 같습니다. 어떻게 Linq를 Entity에 사용해야합니까? 일관성 문제. –
@ Yannick : 내가 이것을 반복하는 방식은 똑같은 일을하는 여러 가지 방법이 있다는 사실입니다. 물론,'BLA.Select (x => ... myProjection ...)'는'from BLA select ... myProjection ... '에서와 같지만 코드에서 일관성 없게 사용하면 내용을 읽기 쉽게 만듭니다. 예를 들어, 코드를 검색하는 경우 동일한 일을하는 코드가 동일하게 보이면 편리합니다. 많은 (무의미한) 다양성은 나쁜 습관입니다. 기능을 추가하지 않고 학습 곡선을 가파르고 코드를 읽기 쉽게 만듭니다. –