1

MVC3를 +와 특정 유형의 엔티티를 액세스하는 엔티티 프레임 워크 4.1 코드는 처음에는 엔티티 프레임 워크 4.1 코드 첫번째 + MVC3와 내가 사용하는 상속의 stratagy을 사용하고

I가 다음과 같은 클래스

Public Class ObjectBase 
    <Key()> 
    Public Property Id As Integer 

    Public Property Description As String 
End Class 

Public Class Computer 
    Inherits ObjectBase 

    Public Property Computername As String 
End Class 

Public Class Book 
    Inherits ObjectBase 

    Public Property BookName As String 
End Class 

Public Class User 
    <Key()> 
    Public Property Id As Integer 

    Public Property Name As String 
End Class 

Public Class BorrowObject 
    <Key()> 
    Public Property Id As Integer 

    Public Property User As User 

    Public Property BorrowedObject as ObjectBase 
End Class 

Public Class BorrowComputerVM 
    <Key()> 
    Public Property Id As Integer 

    Public Property User As User 

    Public Property Computer as Computer 
End Class 
TPC

입니다 내가 쿼리를 수행 할 방법

  1. 모든 BorrowObjects 곳을 얻기 위해 (LINQ, 법인 SQL 또는 기타 일반적으로 사용되는 방법을 사용) :

    내 질문이 있습니다 BorrowedObject의 유형이 컴퓨터입니까? 내가 뷰 모델에 대한 쿼리 의 결과를지도 어떻게

  2. 는 (컴퓨터를 빌려에만 사용 보기 작성에 사용) "BorrowComputerVM"를 불렀다.

질문 1 (및 질문 2)은 매우 간단해야하지만 결과가 전혀없는 답변을 찾기 위해 Google에서 이미 많은 시간을 보냈습니다. 내가 찾은 유일한 점은 context.ObjectBase.OfType (Of Computer)을 작성하여 ObjectBase의 모든 컴퓨터를 가져올 수 있으며 context.BorrowObjects.ObjectBase.OfType (Of Computer)을 쓸 수 없으므로 도움이되지 않는다는 것입니다.

VB.NET에서 코드 샘플을 제공하십시오 (가능한 경우). 그러나 더 중요한 것은 : 제공하는 코드 샘플을 수 시간 내에 수정하십시오!

답변

1

나는 C#에서 그것을 쓰기 :

가 어떻게 BorrowedObject 유형 컴퓨터의 모든 BorrowObjects를 얻을 수 (LINQ, 법인 SQL 또는 기타 일반적으로 사용되는 방법을 사용하여) 쿼리를해야합니까? 당신이 열망 부하 Computer하지 않으려면

var list = context.BorrowObjects.Include(b => b.BorrowedObject) 
        .Where(b => b.BorrowedObject is Computer) 
        .ToList(); 

당신은 Include를 생략 할 수 있습니다. 내가 뷰 모델에 대한 쿼리의 결과를 매핑하려면 어떻게

는 (만 컴퓨터를 빌려 사용 뷰를 만드는 데 사용) "BorrowComputerVM"를 불렀다. UserComputer 명시 Include 않고 ​​또한 BorrowComputerVM에로드됩니다 : 당신이 새로운 형태로 투사하는 경우

var list = context.BorrowObjects 
        .Where(b => b.BorrowedObject is Computer) 
        .Select(b => new BorrowComputerVM 
          { 
           Id = b.Id, 
           User = b.User, 
           Computer = b.BorrowedObject as Computer 
          }) 
        .ToList(); 

Includes 은 필요하지 않습니다.

isas 연산자는 실제로 LINQ to Entities에서 작동합니다.

+0

글쎄, 나는 그것이 단순하다는 것을 알았다. 그러나 이것은 매우 간단하다! 감사! – Thomas

0

This article은 코드 우선 TPC 상속과 필요한 몇 가지 특수 기술에 필요한 많은 구성을 설명합니다. 이미 다 이루어 졌습니까? 기사에 설명 된 코딩 주짓수를 모두 완료했다면 쿼리 구문이나 객체 구조가 장애물이되지 않아야합니다.

+0

안녕하세요!나는 이미 그 기사를 읽고 (여러 다른 사람들과) TPC가해야하는 것처럼 일하고있다. 내 질문에 설명 된 코드 구문에 도움이 필요합니다. 코드 샘플을 입력하십시오. – Thomas

관련 문제