Entity Framework 4 / POCO-어디에서 시작합니까? [닫은]


183

나는 오랫동안 프로그래밍을 해왔고 전에 LINQ-To-SQL 및 LINQ-To-Entities를 사용했습니다 (엔티티를 사용할 때 Entity / Table 1-1 관계에 있었지만 L2SQL과 크게 다르지 않음)

Inversion of Control, 작업 단위, POCO 및 리포지토리 패턴에 대해 많은 것을 읽었으며 새로운 응용 프로그램 에서이 방법론을 사용하고 싶습니다.

내가 어려움을 겪고있는 곳은 EF1에 대한 지식이없는 EF4에 대한 명확하고 간결한 초보자 가이드를 찾는 것입니다.

내가 대답해야 할 구체적인 질문은 다음과 같습니다.

코드 우선 / 모델 우선? EF4와 관련된 장단점 (즉, 먼저 코드를 작성하고 나중에 코드를 변경하고 DB 모델을 재생성해야하는 경우-데이터가 보존 및 변환되거나 삭제됩니까?)

코드 우선 (EF4가 DB 스키마로 변환하는 방법을보고 싶습니다)을 가정한다고 가정하면 실제로 어떻게 시작합니까? 나는 종종 엔터티 다이어그램이있는 기사를 보았는데 "그래서 이것은 나의 엔터티 모델입니다. 이제하겠습니다 ..."-안타깝게도, 디자이너에서 모델을 생성하여 저장했는지 확실하지 않습니다. 코드를 생성 한 후 추가 자동 코드 생성을 중지했거나 코드화 (POCO) 했습니까? 클래스와 어떻게 든 deisgner 뷰로 가져 왔습니까?

필자가 실제로 필요한 것은 "마법"의 출처와 DB에서 직접 EF 모델을 생성하지 않는 경우 직접 추가하는 방법에 대한 이해라고 생각합니다.

나는 그 질문이 약간 모호하다는 것을 알고 있지만 내가 모르는 것을 모른다. 그래서 모든 입력 / 수정 / 설명이 높이 평가됩니다.

말할 것도없이, 나는 누군가 여기에 앉아 EF를 가르쳐 줄 것을 기대하지 않습니다. 나는 좋은 튜토리얼 / 포럼 / 블로그 / 등을 좋아합니다. 완전한 엔티티 초보자를 위해


3
연결의 수명에주의해야합니다 : bit.ly/fi83NV 컨텍스트를 리포지토리로 추상화 할 때 반드시 알아야 할 사항입니다. 작동하는 것처럼 보이지만 실제로는 점점 더 많은 연결을 느리게 클럭하고 있습니다.
BritishDeveloper

@BRitishDeveloper-아주 좋은 조언. 이것은 실제로 우리를 사로 잡았지만 반대 방식으로-우리는 저장소를 검색하기 위해 IoC 컨테이너를 사용하고 있었고 저장소에 지정된 컨텍스트가 오랜 시간이 지나면 연결을 닫을 수 있지만 폐기 / 플래그로 표시되지 않는 문제가 발생했습니다. 비슷한. 결국 일반적인 폐기 상태와 연결 상태를 확인한 IsDisposed ()를 사용하여 컨텍스트를 확장하여 필요한 경우 다른 것을 작성할 수있게했습니다.
기본

또 다른 유용한 팁은 새 컨텍스트를 가져올 때 이전 컨텍스트와 연관된 객체에 적절한 변경 내용 추적이없고 컨텍스트 불일치 문제가 발생할 수 있다는 것입니다. 따라서 오래 실행되는 앱이 있고 컨텍스트를 변경하는 경우 실행하려면 모든 엔티티를 다시 검색해야합니다. 좀 더 흥미롭게 만들려면, 실제로 2 개씩 나란히 실행해야했고 2 개 사이를 멋지게 매핑 할 코드를 작성했습니다.
Basic

1
@Basiclife 나는 그 같은 문제에 부딪쳤다 :) 나는 분리 된 엔티티를 업데이트하는 것에 대한 나의 생각을 잠시 동안 쓰는 것을 의미하고 있었고 당신은 나에게 그냥 그렇게하도록 격려했다 : britishdeveloper.co.uk/2011/03/…
BritishDeveloper

답변:


56

이 기사는 흥미로울 수 있습니다 ...이 시리즈는 실제로 POCO 접근법의 장단점에 도달합니다.

http://blogs.msdn.com/b/adonet/archive/2009/05/21/poco-in-the-entity-framework-part-1-the-experience.aspx

http://blogs.msdn.com/b/adonet/archive/2009/05/28/poco-in-the-entity-framework-part-2-complex-types-deferred-loading-and-explicit-loading. aspx

http://blogs.msdn.com/b/adonet/archive/2009/06/10/poco-in-the-entity-framework-part-3-change-tracking-with-poco.aspx

이 기사에서는 저자가 저장소 및 작업 단위 패턴을 구현하는 모범 사례를 설명하는 미래 기사를 언급하지만 찾을 수는 없습니다. 이 기사는 잘 작성 되었으며이 저자의 더 많은 것을 읽고 싶습니다.


2
누군가 이미 디자이너를 사용하여 Entity Framework에 익숙한 것처럼 이것은 POCO에 대한 훌륭한 소개였습니다.
nathanchere

1
작업 단위를 찾고 있다면 그것은 blogs.msdn.com/b/adonet/archive/2009/06/16/에 있습니다.
Mike

11

나는 이것을 발견했다 : http://blogs.msdn.com/adonet/pages/feature-ctp-walkthrough-code-only-for-the-entity-framework.aspx

먼저 코드를 단계별로 제공합니다. EF4 용 CTP 3이 필요합니다 (해당 기사에서 링크 된 다운로드).

이것은 내가 가진 것과 매우 가깝습니다 (CTP에 의존하지 않는 솔루션이 바람직 할지라도)


주의 :이 CTP는 처음에 VS2010 베타 용 이었지만 VS2010 RTM도 지원합니다.
기본

7

30 분 정도 걸리며 현재 VS에서 안정적인 EF1.0 모델을 생성하는 것이 좋습니다. 그렇게하면 EF 4.0의 은유와 개념을 이해하는 데 도움이됩니다. 간단한 고객, 제품 및 주문 데이터베이스를 작성하십시오 ... 노스 윈드를 사용하지 않는 것이 좋습니다.


4

이것은 좋은 질문이지만 Entity Framework가 계속 발전함에 따라 최신 상태를 유지하기는 어렵습니다. 아마도 미래에 최신 정보를 얻을 수있는 가장 좋은 장소는 Microsoft의 EF 페이지 일 것 입니다.

인터넷 검색 중 도움이되는 다른 링크 몇 가지 (코드 우선) :


3

Lerman의 저서 또는 "Pro linq 객체 관계형 매핑"과 같은 더 간단한 것을 취할 수 있습니다. 코드 생성을 비활성화하고 edmx csdl에서 모델에 직접 매핑하거나 고유 한 POCO 생성기를 생성해야한다는 점을 제외하면 모든 개념은 POCO와 동일합니다. 모든 매핑 원칙도 동일합니다. 어쨌든 런타임에는 POCO 객체에서 파생 된 프록시로 작업하므로 인터 셉션 지원 (POCO 속성의 가상화)에 대해 염려해야합니다.



2

Entity Framework 용 POCO 템플릿에 대한 연습 은 다음과 같습니다 . ADO.NET 팀 블로그 를 확인하십시오 . EF 지식의 기초로 시작 (EF v1.0)에서 시작하려면 Julia Lerman의 Programming Entity Framework 서적이 매우 완벽 하다는 것을 알았 습니다.


고마워-나는 책을 보지 못했지만 제공된 링크를 모두 읽었습니다. 템플릿 연습은 POCO 객체가 정의 된 후 (예 : 지연 로딩) 추가 기능을 추가 할 수있는 방법을 설명하는 데 유용하지만 (여기서 명백한 내용이 누락 될 수 있음) 실제로 시작하는 방법을 설명하지 않습니다 (예 : 간단히 지정된대로 클래스를 만들면 엔티티가 아니거나 모델과 연결되지 않습니다.) 블로그와 비슷한 경험을했습니다. 나는 책을 얻는 것을 고려할 것이다-그것은 유망 해 보인다-감사합니다.
기본

2
줄리아 러먼 그것의 가치의 책에 대해서 그녀는 EF4을 다루는 두 번째 버전에 작동하고 있음을 언급한다 : learnentityframework.com/LearnEntityFramework/book/...를 . 계획된 게시 날짜가 올해 5 월인 곳을 읽었지만 더 이상 소스를 찾을 수 없습니다. 또한 나는이 사이트를 발견했다 : nakedobjects.net/home/index2.shtml
Slauma

Slauma, 당신은 내가 필요 정확히 이케 보았다 제공된 링크 - 어떻게 든 복잡성을 난독 것 같다 "알몸 Obects"라이브러리 타사를 사용하고 제외 - 분을 위해, 나는 당신이 그것을 금 거라고 생각
기본


1

Julia Lerman은 각각 약 10 분 정도 의 멋진 소개 비디오 시리즈를 제공 합니다. 그것들은 입문이지만, 잠재적 인 학습 장애물을 벗어날 수있는 실용적인 팁이 많이 있습니다. 특히 SQL Server 프로파일 러를 사용하여 실제 SQL이 진행되는 모습을 보는 그녀의 데모가 마음에 들었습니다.


1

연결이 끊어진 시나리오를 사용하려는 경우, 4 장의 Julie Lerman 책 : "Programming DbContext"를 읽는 것이 좋습니다.

블로그 등에서 많은 예제를 찾았지만 거의 모두 연결된 시나리오에 관한 것입니다.

나도 시작하고있어 이 책은 저에게 많은 도움이되었습니다. 그건 그렇고, 나는 그녀에게 세 권의 책을 샀다.



0

와우, 많은 답변. POCO + 인터페이스 + 리포지토리를 모두 생성하는 T4 템플릿의 수정 버전이 포함 된 예는 어떻습니까?

https://entityinterfacegenerator.codeplex.com


저장소 / 컨텍스트 테스트에 흥미롭고 편리하지만 엔티티 자체를 추상화해야하는 이유는 무엇입니까? 정의에 따라 내부에 기능 코드가 없어야합니다.
기본

당신이 올바른지. 대부분의 사람들은 별도의 인터페이스를 가질 필요가 없습니다. 그러나 순환 참조를 해결하고 실제 클래스가 아닌 인터페이스를 타사와 공유하려는 사람들에게 도움이됩니다. 귀사에서 타사 통합을 통해 감사를 통과해야하는 경우 많은 도움이되며, 세부적인 구현이 필요하지 않습니다.
믿음 2014 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.