2010-03-14 7 views
7

ASP.NET 및 Windows 서버을 기반으로 새 프로젝트를 시작합니다.ADO.NET 엔터티 프레임 워크 또는 ADO.NET

응용 프로그램이 꽤 크게 계획되어 있고 은 많은 수의 클라이언트가 높은 주파수를 가져오고 업데이트하는 서비스를 제공합니다. 변화하는 데이터.

나는 이전에 Linq-To-Sql 또는 Ado.Net으로 프로젝트를 만들었습니다.

내 프로젝트는 VS2010과 새로운 EF4 프레임 워크를 사용하는 것입니다.

  • 엔티티 프레임 워크 이전 경험

  • 장단점과 개발 에 대한 다른 프로그래머 옵션을 듣고 좋은 것?

  • EF4는 제작 준비가 되셨습니까?

  • 나는 위험을 감수해야 하는가 아니면 보통의 오래된 ADO.NET을 고수해야 하는가?
+0

앱의 종류에 대해 더 자세히 말할 수 있습니까? 거래 애플 리케이션처럼 들리네 - 나쁜 소식 : 완전히 잘못된 도구. – TomTom

답변

6

EF4가 공식적으로 출시되지 않았기 때문에 EF4가 실제로 제작 준비가되어 있는지 여부는 다소 어렵습니다 .... 그러나 모든 예비 경험과 보고서는 그것이 훌륭하다는 것을 나타내는 것 같습니다.

그러나 EF가 해결하려고하는 것이 무엇인지 고려해야합니다. 그것은 2 계층 접근법입니다. 하나의 계층은 데이터베이스의 물리적 저장소 스키마에 매핑되며 다중 백엔드를 지원합니다. 두 번째 계층은 사용자가 프로그래밍 할 수있는 개념적 모델입니다. 물론 두 레이어 간의 매핑이 필요합니다.

그래서 많은 수의 테이블을 가지고 있거나, 지원할 여러 백엔드가 있고, 물리적 스키마를 다른 개념 스키마에 매핑 할 수 있어야하는 경우 등에 EF4가 유용합니다. 복잡한 엔터프라이즈 수준 애플리케이션에 적합합니다.

그러나 추가 레이어는 성능, 복잡성, 유지 관리성에 영향을 미칩니다. 이러한 기능이 필요하면 그 가격을 지불해도됩니다. 그러나 당신은 그것을 필요로 하느냐??

물론 ADO.NET으로 다시 돌아갈 수는 있지만 실제로 DataTables, DataRows 및 형식이 지정되지 않은 Row["RowName"] 구조로 다시 돌아가고 싶습니까? 정말???

그래서 내 추천이 될 것이다 :

  • 당신은 당신의 백엔드로 전용 SQL 서버가 필요한 경우
  • 모델
  • 당신이 하나의 엔티티 객체에 하나 개의 데이터베이스 테이블의 상당히 단순하고 간단 매핑이있는 경우

: Linq-to-! 왜 안돼 ?? .NET에서 여전히 전적으로 Microsoft에서 지원합니다. 도대체 bugfixes and added a few bits and pieces - 빠르고, 효율적이며, 간결하고 의미가 있습니다.

+0

응답 해 주셔서 감사합니다. 당신이 말했듯이 ado.net 그냥 엉덩이에 고통이며, 나는 정말로 linq - 투 - SQL 좋아하지만 천천히 죽어 가고 뭔가를 선택하는 느낌. 미래의 EF가 아닙니까? – RuSh

+1

EF는 미래입니다 - 모든 기능이 필요하다면 그렇습니다. Linq-to-SQL을 사용할 수 있으며, 유효하고, 작동하며, 빠릅니다. 왜 사용하지 않습니까 ?? –

+1

당신은 여전히 ​​Linq To SQL과 함께 새로운 프로젝트를 위해 자리를 지키고 있습니까? 1-1 매핑에서 테이블을 노출하고 WCF Data Services에서 테이블을 노출하는 것이 필요합니까? 감사! – Nock

0

EF 4는 이제 LINQ to SQL과 더 비슷합니다. 그것은 바로 객체에 FK 키를 가지고 있고, 객체 세트에 바로 메소드를 추가하고, 다른 많은 좋은 기능을 가지고 있습니다. 디자이너는 훨씬 향상되었으며 주요 장점은 LINQ to SQL 대신 SQL Server 만 사용하는 SQL과 Oracle 및 일부 다른 공급자 (공급자가 지원하는 한)와 호환된다는 것입니다.

EF는 미래입니다. ADO.NET 데이터 서비스는 웹 서비스 추가 기능이며 POCO 및 T4 세대를 지원하며 모든 새로운 기능이이를 지원합니다 (LINQ to SQL은 유지 관리 전용이며 데이터 세트는 더 이상 변경되지 않습니다).

HTH.

2

제 조언은 둘 다 사용합니다. 처음에는 linq 만 SQL에 사용하고 ado.net을 다시 만질 필요가 없다고 생각했습니다. (나를 행복하게 만들었습니다.)

이제 linq에서 sql (및 EF와 같은 ORM)을 수행 할 수 없기 때문에 둘 다 사용하고 있습니다. 나는 대량 삽입물을해야만했고 SQL에 linq을 먼저 사용하고 500 레코드를 수행하기 위해 6 분 (2 분의 유효성 검사 규칙이 DB에 삽입되어 있음)이 필요했습니다. ,

나는 대량 복사를하고이를 SQL로 변경하고 지금은 2 분 4 초까지입니다 (4 초 모든 삽입 할)

을하지만 marc_s 말했듯이 정말 DataTables, 데이터 행 주변에 바이올린 싶지 않았다 및 유형이 지정되지 않은 행 [ "RowName"].

내 테이블이 10 열 길이라는 것과 테이블 A라고 불렀다. 나는 linq을 SQL에 사용하고 Table A 클래스 (새 TableA()) 개체를 만들어 데이터로 채 웠습니다. 그런 다음이 객체를 datarow를 만든 메서드에 전달합니다.

그래서 linq to sql은 데이터 행을 만드는 메소드에 10 개의 매개 변수를 전달하고 싶지 않았기 때문에 클래스를 만들었 기 때문에 약간 시간이 절약되었습니다. 또한이 메소드를 사용하기 위해 올바른 객체를 전달해야하므로 잘못된 데이터를 전달할 가능성이 적기 때문에 약간의 유형화가 가능하다고 생각합니다.

마지막으로 여전히 linq to sql을 사용하여 저장 프로 시저를 호출 할 수 있으며 이는 한 줄의 코드와 같습니다.

그래서 둘 다 혹시 당신이 SQL (또는 귀하의 경우 EF)에 linq 다음 천천히 그냥 SP를 작성하고 EF를 통해 전화 통지 통지를 사용합니다. 똑바로 ado.net 할 필요가 있다면 당신이해야 할 일을 평가 아마 어쩌면 당신은 코드의 대부분을 위해 EF를 사용할 수 있습니다 (그래서 당신은 적어도 객체로 작업 할 수 있습니다) 그리고 그 작은 부분에 대해서만 ado.net 일종의 내가 뭘했는지 SQL 대량 복사.

관련 문제