내 EF 컨텍스트에는 계층 구조 당 접근 방식으로 관리되는 클래스 계층 구조가 있습니다. 다음과 같이EF - 계층 구조별 특정 형식 테이블의 모든 레코드를 추출합니다.
public abstract class BaseClass
{
[Required]
public int Id {get; set;}
...
}
public abstract class ExtendedClass1 : BaseClass
{
...
}
public abstract class ExtendedClass2 : BaseClass
{
...
}
클래스가 구성 :
public class ExtendedClass1Configuration :
EntityTypeConfiguration<ExtendedClass1>
{
...
this.Map(m => m.Requires("Discriminator").HasValue("ExtendedClass1"));
}
나는 저장소를 사용하여 데이터베이스에 액세스하려면
그러므로 나는 그것에서 파생 기본 추상 클래스와 클래스의 무리가 일반 저장소에서 파생 된 :public abstract class Repository<TEntity> : IRepository<TEntity> where TEntity: BaseClass
{
protected DbContext context;
DbSet<TEntity> GetSet()
{
return this.context.Set<TEntity>();
}
public virtual void Add(TEntity entity)
{
this.GetSet().Add(entity);
}
...
}
public class BaseClassRepository : Repository<BaseClass>, IBaseClassRepository
{
...
}
특정 하위 유형의 모든 클래스를 추출하는 저장소 (예 : ExtendedClass1
의 모든 레코드).
The type or namespace name 'type' could not be found
내가 지금 노력하고있어 또 다른 방법이 같은 것입니다 :
public IEnumerable<BaseClass> GetByType(Type type) {
return context.Set<BaseClass>().OfType<type>();
}
이 나에게 다음과 같은 컴파일 오류가 있습니다 : 다음과 같이
내가 성공하지 않고, 몇 가지 방법을 시도했다 :
public IEnumerable<TBaseClass> GetByType() where TBaseClass : BaseClass {
return context.Set<BaseClass>().OfType<TBaseClass>();
}
내가 뭘 잘못하고 있니? 어떻게 구현할 수 있습니까?
'OfType(); 도대체 무엇입니까? (버그가 아니라면) –
Will
GetByType 메소드에서 다음 줄을 확인하십시오 : return context.Set() .OfType (); 반환 컨텍스트 여야합니다. () .OfType (); 유형 이름은 변수가 아닙니다. –
그 라인이 컴파일되지 않습니다, 그것은 당신에게 내가 시도하고있는 다양한 접근 방법을 알려주는 것입니다 @Will – user449689