2012-02-26 5 views
1

내 응용 프로그램에서 데이터베이스 계층으로 엔터티 프레임 워크를 사용할 계획이지만 Oracle 데이터베이스를 지원하지 않는다는 사실을 발견했으며이를 위해 타사 공급자를 사용해야합니다.크로스 데이터베이스 엔터티 프레임 워크 지원

그러나 데이터베이스 계층 (Oracle, MS SQL Server)을 지원하고 동시에 LinqToSql 및 devart와 같은 엔티티 모델을 지원하고자합니다.

정보가 있으면 알려 주시면 감사하겠습니다. 감사합니다. .

답변

1

여기서 원하는 것은 저장소 패턴입니다. 응용 프로그램이 기본 데이터의 저장 방법을 신경 쓰지 않도록 중간에 놓을 수있는 항목 일 것입니다.

당신은 내 저장소 패턴 같은 것을 사용할 수있다 (여기에 대해 읽어 : http://blog.staticvoid.co.nz/2011/10/staticvoid-repository-pattern-nuget.html) 및 Oracle에 대한 사용자 정의 IRepositoryDataSource을 구현 (당신은, 코드 플렉스에서 오라클 공급자에 http://linqtooracle.codeplex.com/을 LINQ를 사용하여이 작업을 수행 할 수있다) 또는 대안 당신은 쓸 수 귀하 SQL과 오라클 구현을위한 자체 저장소.

+0

Entity Framework은 이미 데이터베이스에서 추상화되어 있습니다. 그 위에 다른 저장소를 구현하고 싶지는 않을 것입니다. – usr

+0

엔터티 Framewok이 데이터베이스에서 완전히 추상화되지 않았습니다. 그것은 나타납니다. EF 생성 엔티티를 사용하는 모든 위치에 중단 점을 배치하면 컴파일러가 엔티티 클래스와 동일한 유형이 아닌 프록시 클래스를 생성했음을 알 수 있습니다. xml serialization이 괜찮은 것 같지만,이 클래스의 리플렉션 및 이진 직렬화에는 영향을 미칩니다. 이러한 프록시에는 변경 내용을 추적하는 데 사용되는 데이터와 동작이 포함됩니다. 진정한 추상화에는 저장소 패턴이나 POCO에 대한 일종의 매핑이 필요합니다. –

1

Entity Framework에는 SQL Server 이외의 RDBMS에 대한 기본 제공 공급자가 포함되어 있지 않습니다. EF를 지원하려는 타사 RDBMS 공급 업체는 Microsoft 제공 업체 모델을 기반으로 자체 구현을 제공해야합니다. 오라클은 사실 ODP.NET의 일부인 공식 공급 업체를 발표했습니다.

http://www.oracle.com/technetwork/issue-archive/2011/11-sep/o51odt-453447.html

추신 :이 무료이기 때문에 나는이 하나를 추천 할 것입니다 - Devart LinqConnect 공급자는 이 아니며 실제로 Linq to SQL 공급자입니다. 이들은 Linq to SQL 클래스 (DataContext, EntitySet<T> 등)의 구조와 기능을 모방 한 클래스를 제공하지만 다른 네임 스페이스에 있습니다. Microsoft 이외의 다른 사람이 Linq to SQL 공급자를 구현하는 것은 불가능합니다. 공용 형식을 통해 공급자 모델을 공개하지 않았기 때문입니다.