내 데이터베이스 컨텍스트 클래스에서 DbSet을 선언하려고합니다. 클래스 (Entity Framwork 클래스) 사용자가 호출하지 않기 때문에. 그래서 DbSet을 동적으로 선언하고 싶습니다.신고 방법 DbSet <dynamic>?
0
A
답변
0
필자는 귀하의 환경에서 모든 것을 명시 적으로 정의하려고 노력할 것입니다. 이 속성 선언에는 많은 기능이 포함되어 있습니다. 그 중 최소한의 것은 유형을 갖는 디자인 타임의 이점입니다.
동적 쿼리에 대한 기술은 많이 있지만 과거에 사용한 적이있는 조회 테이블을 동적으로 쿼리하기위한 기술을 게시 할 것입니다. 여기
public List<LookupItemDTO> LoadItems(int lookupId)
{
//nothing special here, just map the lookup id to a name
var lookupRepo = new LookupRepository<LookupDefinition>(uow);
var lookup = lookupRepo.Find(id);
//map the lookup's name from the table to a type. This is important DO NOT ACCEPT A TABLE NAME FROM THE USER.
var targetType = Type.GetType("MyApp.DomainClasses.Lookup." + lookup.Name + ",MyApp.DomainClasses");
// this is an optional extra step but it allows us to instantiate an instance of our repository to ensure that business rules are enforced
var lookupType = typeof(LookupRepository<>).MakeGenericType(targetType);
dynamic LookupTable = Activator.CreateInstance(lookupType);
//just some pattern nonsense to wire up the unit of work
LookupTable.SetupUOW(uow);
//make sure to cast it into something you can work with ASAP
var data = ((IQueryable<LookupTableBase>)LookupTable.All).OrderByDescending(l => l.IsVisible).ThenBy(l => l.SortOrder);
var list = from li in data
select new LookupItemDTO
{
Id = li.Id,
Description = li.Description,
Display = li.Display,
SortOrder = li.SortOrder,
IsVisible = li.IsVisible
};
return list.ToList();
}
열쇠는 당신이 동적으로 테이블을 조회 할 수 있다는 것입니다,하지만 높은 수준에서 그것을하는 것이 좋습니다. 또한, 당신과 당신의 사용자 입력 사이에 어떤 종류의 간접적 인 지시를하십시오. 목록에서 표를 선택하게하고 해당 표의 ID를 사용하여 이름을 찾습니다. 내 솔루션은 여기에 조회 테이블 정의 테이블이 있습니다. 동적 쿼리는 모두 부터 시작하여으로 시작한 다음 해당 정의 테이블의 값을 사용하여 필요한 유형을 작성합니다.
관련 문제
- 1. "신고/신고 덧글"을 구현하는 방법
- 2. 신고 신고 예상
- 3. 마이그레이션 : DbSet <T> .AddOrUpdate 문제
- 4. 신고 시스템을 설정하는 방법
- 5. 재산 신고 방법
- 6. 오늘 신고 방법?
- 7. EF 4.1에서 DBSet <Something> 대신 DBSet <ISomething>을 사용할 수 있습니까?
- 8. 모의 방법 DbSet 메서드 포함?
- 9. 여러 항목 dbset 검색 방법
- 10. 왜 DbSet <T> 데이터베이스
- 11. DbSet <>으로 페이징 로컬
- 12. 엔티티 프레임 워크 : DBSet <Parent>
- 13. ASP.NET 쿼리 제네릭 DBSet <T>
- 14. DbSet <>. SaveChanges가 호출되도록 추가합니다. 왜?
- 15. 문자열에서 DbSet <MyTable> 받기
- 16. EF DBSET
- 17. DbSet 상황
- 18. 신고 진행
- 19. 녹아웃 신고
- 20. EF-CodeFirst에 DbSet <string>과 같은 DbSet 유형의 문자열을 사용하십시오.
- 21. 자바 스크립트에서 신고 된 변수에 도달하는 방법
- 22. 검도 신고 errorTemplate 알림 (MVC) 표시 방법
- 23. edmx에서 DBSet 속성 사용
- 24. DbSet 및 DbContext 정보
- 25. EDMX은 ICollection은 DBSet 대
- 26. DbSet을 포함하는 DbSet 그룹
- 27. 필터링 DbSet EntityFramework에서 CodeFirst
- 28. DbSet DbContext 클래스의 외부
- 29. 여러 항목을 반환하는 DbSet
- 30. 이미 신고 된 클래스를 신고 취소하는 방법은 무엇입니까?
무엇을 시도 했습니까? 특정 유스 케이스는 무엇입니까? 모든 것을 컨텍스트에서 명시 적으로 정의한 다음 다른 레벨에서 동적 인 작업을 수행하는 것이 더 좋습니다. – kettch