2012-11-03 2 views
0

저는 Entity Framework의 코드 우선을 사용하려고했습니다. 아래 코드 줄을 작성했습니다.코드 첫 번째 DbContext 사용

DbContext _context = new DbContext(ConfigurationManager.ConnectionStrings["con"].ConnectionString); 

그러나 실행 중에는 연결이 닫힌 상태로 유지됩니다. 이 코드에 문제가 있습니까?

나는

public class GenericRepository<T> where T:class 
    { 

public DbContext _context = new DbContext(ConfigurationManager.ConnectionStrings["con"].ConnectionString); 

private DbSet<T> _dbset; 

public DbSet<T> Dbset 
{ 

    set { _dbset = _context.Set<T>(); } 
    get { return _dbset; } 

} 

public IQueryable<T> GetAll() 
{ 

    return Dbset; 
} 
} 

아래의 DBContext을 사용하여 일반 저장소 클래스를 생성하고 난 후 교사가 데이터베이스

의 테이블에 매핑하는 엔티티 클래스는 페이지로드 이벤트에이 클래스를 호출
protected void Page_Load(object sender, EventArgs e) 
{ 
    GenericRepository<Teacher> studentrepository = new GenericRepository<Teacher>(); 
    rptSchoolData.DataSource = studentrepository.GetAll().ToList(); 
    rptSchoolData.DataBind(); 
} 

하지만 연결이 닫히지 않고 컨텍스트 개체의 ServerVersion에 InvalidOperation 예외가 있습니다.

나는 뭔가를 놓치고 있습니까 ??

+0

DbContext에서 상속 받고 자신의 엔터티 컬렉션을 정의하는 고유 한 컨텍스트 클래스를 만들어야합니다. – tvanfosson

+0

테이블에 이미 데이터베이스가 있습니다. DbContext 객체에 전달한 연결 문자열에 지정한 내용입니다. 나는 여전히 그것으로부터 상속받은 수업이 필요한가요? – RAHUL

+0

@RAHUL : 예, 필요합니다. – Slauma

답변

0

이 속성

public DbSet<T> Dbset 
{ 
    set { _dbset = _context.Set<T>(); } 
    get { return _dbset; } 
} 

그것에 무거운 냄새가. value으로 아무것도하지 않는 설정자는 반 패턴 큰 시간입니다. GenericRepository을 생성 한 후 DbSet을 설정 하시겠습니까?

_dbset을 초기화하지 않기 때문에 코드가 작동한다는 것을 이해하지 못하면 null 객체 참조 예외가 발생합니다.

_dbsetDbSet이 처음에는 없어야합니다. GetAll_context.Set<T>()을 반환해야합니다. EF는 연결을 모두 열고 닫아야합니다. DbSet을 초기화하지 않으면 연결이 열리지 않아서 여기에 공개되지 않은 다른 코드 부분에 문제가 발생할 수 있습니다.

+0

Gert에게 감사드립니다 .... 나는 getter에서 _dbset을 초기화했고 그 문제를 처리했습니다. 그러나 나는 지금 또 다른 문제가있다. 나는 "엔티티 유형 교사는 현재 상황에서 모델의 일부가 아닙니다"라는 예외를받습니다. 나는 값으로 기존 데이터베이스를 사용하고 있으며 데이터 조작을 위해 먼저 코드를 사용하고 있다고 언급하는 것을 잊어 버렸다. 나는 아무것도 잊어 버리고 있니? – RAHUL

+0

새로운 질문을하는 것이 좋습니다. 다른 문제이며 클래스 모델 및 매핑의 코드가 필요합니다. 내가 무엇을 할 수 있는지 알아볼 게. –

+0

http : // stackoverflow.com/questions/13477420/code-first-generic-repository-existing-database-tables 위의 링크에서 새로운 질문을 만들었습니다. 그것을 들여다보십시오. – RAHUL

관련 문제