2010-06-01 8 views
3

그래서 내 개체 중 DataStorage와 상호 작용할 수있는 일반 인터페이스를 만들어서 EF4 또는 SubSonic 또는 NHibernate 또는 일부 NoSQL 옵션을 사용하도록 바꿀 수 있습니다.Entity Framework 4로드 ID로 레코드

그래서 ERD가 있고 모든 테이블에 기본 키인 "TableNameID"가 자동으로 증가합니다. 일반 방법의 기본 키를 사용하여 DB에서 단일 레코드를 얻는 방법을 알아 내려고합니다

public T GetSingle<T>(int primaryKey) where T : class 

EF4를 사용하여 어떻게합니까?

답변

2

일반 ObjectContext.CreateObjectSet()을 통해이 작업을 수행 할 수 있습니다.

예를 들어, 같은 :

public T GetSingle<T>(int primaryKey) where T : class 
{ 
    var q = Context.CreateObjectSet<T>().Where("it.TableNameID = @tableNameId"); 
    q.Parameters.Add(new ObjectParameter("tableNameId", primaryKey)); 
    return q.Single(); 
} 
+0

나는 테이블의 이름이 기본 키가 UsersID 사용자 인 경우 좀 더 명확해야 같아요. 나는 이것이 시작이라고 생각하지만, 어떻게 든 EF4를 통해 기본 키의 이름을 찾을 수 있다면 가장 효과적 일 것이라고 생각한다. –

+0

반향을 사용하여 클래스 이름을 찾아서 찾을 수있는 최상의 대답 인 것처럼 보입니다. 클래스 이름은 테이블 이름과 동일하며 모든 ID는 표준을 따릅니다. –

+0

클래스 이름을 가져 오기 위해 리플렉션을 사용할 필요가 없습니다. 'typeof (T) .Name'은 할 것이고, System.Reflection을 요구하지 않습니다. –