답변:
예, 그러나 몇 가지주의 사항이 있습니다.
Microsoft가 전적으로 지원하고 있으며 점점 커지고있는 커뮤니티를 보유하고 있지만 가장 가까운 경쟁자 인 nHibernate보다 새로운 것은 아직 성숙하지 않은 커뮤니티입니다.
덜 성숙한 커뮤니티와 함께 EF4에서 기능을 사용할 수 있지만 간신히 문서화 되는 경우가 있습니다 . 또는 EF4는 Google이 도와 드릴 수없는 예외를 처리합니다.
Microsoft가 의도 한대로 사용하면 모든 기능을 갖추고 있지만 내 경험으로는 기존 시스템에 맞게 개조하기가 매우 어려울 수 있습니다. 이상적으로는 100 % Microsoft 스택이있는 그린 필드 시나리오에서 사용합니다. 다른 시스템과 섞일 수있을만큼 유연하지만 그렇게하면 어려움이 크게 증가합니다.
그러나 요점을 되풀이하기 위해서는 생산에 사용하기에 완벽하고 안정적입니다.
분명해 보이지만 통증을 유발할 때까지 간과되는 한 가지 중요한 점은 ORM이 관계형 패러다임에서 OO 패러다임으로 매핑하는 것입니다. 이러한 계층 중 하나가 해당 패러다임의 규칙을 따르지 않으면 추가로 상처를받을 것입니다.
관계형 / 세트 기반 SQL 및 OOP 패러다임에 정통한 경우 ORM을 사용하면 두 가지가 버터처럼 섞일 수 있습니다. 데이터베이스가 OO 인 것처럼 보이고 OO 코드가 레코드 기반 인 것처럼 보이는 경우 YMMV.
우리는 여러 프로덕션 응용 프로그램에서 EF를 사용하고 있습니다. 또한 여러 프로덕션 앱에 NHibernate가 있습니다. EF가 "Microsoft가 의도 한대로 사용될 때"가장 잘 작동한다는 STW의 의견은 확실히 사실입니다. NHibernate 팀이 의도 한 패턴에 따라 사용될 때 가장 잘 작동한다는 것도 NHibernate의 경우에도 마찬가지입니다. XPO에 대한 지식이나 경험이 없습니다.
NHibernate를 생산에 투입하는 것을 후회하지 않습니다.
Entity Framework를 프로덕션 환경에 넣는 것을 후회하지 않습니다.
EF를 사용하는 추진 요인 중 하나는 LINQ와의 통합이었습니다. NHibernate는 LINQ 와도 많은 작업을 수행했지만 아직 조사 할 시간이 없었 음을 알고 있습니다.
우리는 웹 프로젝트를위한 Code First 접근 방식과 함께 EF4.1을 사용하고 있으며 앞에서 언급했듯이 Microsoft가 의도 한대로 사용법을 유지하면 많은 문제를 예방할 수 있습니다.
그러나 시스템이 아직 성숙하지 않았다는 것을 알 수 있습니다.
그렇게 생각합니다. 다중 테넌트 웹 응용 프로그램을 개발하기 위해 EF4 코드 우선 (CTP)을 사용하고 있습니다.