동일한 데이터베이스 (열, 유형 등)로 데이터베이스에 2 개의 테이블이 있다고 가정 해보십시오. Linq-To-SQL은이 두 클래스에 같은 클래스를 사용하여 Table<AClass>
으로 처리 할 수 있습니까? 그것을하는 방법?Linq-To-SQL은 두 테이블의 유사점을 알고 있습니까?
답변
하나의 옵션은 쿼리 전용 인 경우 결과를 통합하는 서버에서 뷰를 만드는 것입니다.
UNION 및 CONCAT 연산자는 여러 테이블에서 여러 테이블로 쉽게 사용할 수 있습니다. UNION 및 CONCAT 연산자에 대한 링크는 다음과 같습니다. http://blog.benhall.me.uk/2007/08/linq-to-sql-difference-between-concat.html
약간의 차이점이있는 경우 동일한 필드를 노출하는 랩퍼 개체를 만들어서 숨길 수 있습니다 (불일치의 이름은 바꿉니다).
두 개의 불일치 테이블을 사용하여 LINQPAD 예제를 작성했습니다. 그것은 (예상대로 나는 초에 추가 가짜 행 병합) 괜찮 았는데 :
var set1 = from t in TestTriggers
select new {t.TestTriggerID} ;
var set2 = from t in TestTrigger2s
select new {t.TestTriggerID} ;
set1.Dump();
set2.Dump();
set1.Union(set2).Dump();
set1.Concat(set2).Dump();
두 테이블의 다른 열을했다,하지만 익명의 유형은 숨 깁니다. 결과 :
IOrderedQueryable<> (1 item)
TestTriggerID
1
IOrderedQueryable<> (2 items)
TestTriggerID
1
2
IOrderedQueryable<> (2 items)
TestTriggerID
1
2
IOrderedQueryable<> (3 items)
TestTriggerID
1
1
2
CONCAT은 UNION이 중복을 삭제하는 동안 두 테이블에서 1 행을 복제 한 것을 볼 수 있습니다.
수 Linq에 - 투 - SQL을 같은 클래스를 사용하여 테이블로 처리 갱신 시나리오의 당신의 더 붙어 그것을 사용하는 테이블을 알고 SQL에 LINQ 가능하지 않을 것 같은 들어
... 둘 다?
아니요 동일한 DBML 파일 (동일한 네임 스페이스)에 같은 이름의 클래스를 두 개 지정할 수 없습니다. 게다가 LINQ-to-SQL은 삽입하거나 업데이트 할 테이블을 어떻게 알 수 있습니까?
더 좋은 질문은 동일한 스키마가있는 두 개의 테이블을 하나의 컬렉션으로 함께 사용하려는 경우 왜 테이블을 단일 테이블로 병합하지 않는 것이 좋을까요?
독서의 경우 : 아무런 문제가되지 않습니다. 쿼리는 임의의 타입으로 투영 될 수 있고 LinqToSql은 프로퍼티 이름을 컬럼 결과와 일치시킵니다.
- SQL 해당 SQL 스트링으로 불린다
DataContext.ExecuteQuery<Person>()
생산되고 documetation-
파라미터 : 다음 조작에 의해 열거 된 경우 해결
from c in dc.Customer where c.Address.StreetName.StartsWith("AB") select new Person() {Name = c.Name};
A (전술 한 것과 같이 질의 등)
- sql이 데이터베이스로 보내지고 datareader가 반환됩니다.
- 데이터 배열은
DataContext.Translate<Person>()
docmentation으로 전달됩니다. 이 쿼리의 경우
- 만 Customer.Name 열 페치 및 고객의 인스턴스는 최대 new'd되지 않습니다. 또한 참고 - 당신은 datareader가 있다면 DataContext.Translate<T>
자신을 호출 할 수 있습니다.
단일 유형의 쿼리 가능한 테이블처럼 작동 속성을 추가 할 경우, 부분의 DataContext 파일에서이 작업을 수행 : 쓰기 위해
public IQueryable<CustomType> CustomTypeTable
{
get
{
var query = this.Type1Table.Select(t1 => new CustomType{f1 = t1.f1 ... })
.Concat(this.Type2Table.Select(t2 => new CustomType{f1 => t2.f1 ... })
return query
}
}
가 ...의 DataContext에 ObjectTracking하는 것입니다 유형 및 기본 키. 각 인스턴스의 유형은 데이터베이스의 테이블에 (모호하지 않게) 매핑해야합니다. 따라서 이러한 시나리오에서는 1 개의 유형 맵을 2 개의 테이블로 가질 수 없습니다.
다른 스키마에 동일한 이름을 가진 두 개의 테이블이있는 경우 테이블 특성에서 스키마 이름을 제거하고 다른 연결 문자열로 DataContext를 다시 만들어 필요한 동작을 얻을 수 있습니다.
동일한 스키마에서 이름이 같고 구조가 동일한 두 개의 테이블이있는 경우 이러한 테이블을 단일 클래스에 매핑하는 방법을 알지 못합니다.
- 1. LinqToSQL은 Linq와 동일합니까?
- 2. 문서 유사점을 시각화
- 3. 텍스트를 파싱하고 유사점을 반환하십시오.
- 4. LinqToSql은 텍스트 파일 연결을 지원합니까?
- 5. 두 테이블의 많은 부울
- 6. 두 테이블의 꼭대기 정렬
- 7. 두 테이블의 데이터 표시
- 8. 테이블의 열을 다른 두 테이블의 값으로 업데이트하십시오.
- 9. 두 테이블의 데이터를 하나의 뷰로
- 10. 두 테이블의 동일한 인덱스 이름
- 11. 한 문장으로 두 테이블의 쿼리?
- 12. mysql : 두 테이블의 구조 비교
- 13. C와 C++ 함수 사이의 유사점을 식별하는 도구
- 14. 두 테이블의 필드가있는 테이블 만들기
- 15. mysql에서 두 테이블의 조건부 병합
- 16. 데이터 테이블의 두 행을 뒤집기
- 17. 두 테이블의 계층 적 쿼리
- 18. RoR에서이 두 테이블의 관계는 무엇입니까?
- 19. 나는 두 테이블의 X와 Y가
- 20. 엔티티는 자신의 DbContext를 알고 있습니까?
- 21. 첫 번째 테이블의 ID를 기반으로 두 번째 테이블의 값을 합산합니다.
- 22. 누구나이 두 사진의 차이점을 알고 계십니까?
- 23. SQL Server의 두 데이터베이스 테이블의 차이점을 확인할 수있는 도구가 있습니까?
- 24. 안드로이드에서 2 개의 이미지 사이의 유사점을 식별하는 라이브러리
- 25. 서로 다른 두 테이블의 두 열이 정확히 일치하는지 확인합니다.
- 26. 두 테이블의 열에 MAX() 가져 오기
- 27. 두 테이블의 결과에서 ID를 얻는 방법
- 28. 하나의 변수를 사용하여 두 테이블의 정보를 검색하십시오.
- 29. 하나의 where 절이있는 두 테이블의 조합
- 30. 알고
@DamienG 네, 테이블과 클래스 이름은 다를 수 있지만 어떻게 내 대답과 관련이 있습니까? –