1

Silverlight WCF RIA Services 응용 프로그램을 만들고 있습니다. 데이터베이스에서 여러 테이블을 사용하는 여러 가지 방법을 시도해 왔습니다. 현재 도메인 서비스 클래스의 테이블을 조인하여 서비스 에이전트에 반환하려고합니다.WCF RIA 서비스, 도메인 서비스의 테이블 조인

public IQueryable<Invoice> GetInvoices() 
    { 
     return (from i in this.ObjectContext.Invoices 
       join o in this.ObjectContext.otherTable equals condition 
       join s in this.ObjectContext.otherTable equals condition 
       select i); 
    } 

이 올바르게 주어진 조건에 따라 테이블을 조인 : 내가 같은 테이블을 조인하기 위해 노력하고있어 http://simplemvvmtoolkit.codeplex.com/wikipage?title=WCF%20RIA%20Services

: 나는에있는 템플릿에서이 프로젝트를 시작했다. 하지만 실제로 i.Invoices 테이블 & s.otherTable에서 Project Fields가 필요합니다. 이 프로젝션을 DomainServiceClass.cs에서 사용할 수 있도록 제안 하시겠습니까? USER "크리스"제안 FROM

샘플 코드 :

public class Invoice_PM 
    { 
    [Key] 
    public int InvoiceId { get; set; } 

    public string PaymentNum { get; set; } 

    public DateTime? PaymentExpDate { get; set; } 

    public DateTime? InvoiceDateTime { get; set; } 

    [Include, Association("name", "InvoiceID", "InvoiceDateTime")] 
    public IEnumerable<InvoiceSoldToShipTo_PM> SoldToShipTo { get; set; } 
} 

답변

0

귀하의 LINQ 쿼리은 당신이 마지막에 내가 변수를 선택되기 때문에 기본적으로 송장을 필터링하는 조인을 사용하고 있습니다.

Error: The entity or complex type cannot be constructed in a LINQ to Entities query

나는 당신이 당신의로드 및 LINQ 문의 결과를 선택하려는 모든 속성에 사용자 정의 클래스를 생성 제안 :이 게시물에 대한 대답은 당신에게 당신이 원하는 결과를 얻을 것이라고 생각 사용자 정의 클래스에 추가하십시오.

사용자 정의 클래스 :

public class CustomInvoice 
{ 
    public int InvoiceID { get; set; } 
    public int InvoiceNumber { get; set; } 
    public int ProductID { get; set; } 
    public string ProductName { get; set; } 
    public int InvoiceID { get; set; } 
    public string CustomerName { get; set; } 
} 

도메인 서비스 기능 :이 코드를 테스트 시도하지 않은

public IQueryable<CustomInvoice> GetInvoices() 
{ 
    return (from i in this.ObjectContext.Invoices 
      join p in this.ObjectContext.Product equals condition 
      join c in this.ObjectContext.Customer equals condition 
      select new CustomInvoice 
      { 
       InvoiceID = i.ID, 
       InvoideNumber = i.InvoiceNumber, 
       ProductID = p.ID, 
       ProductName = p.Name, 
       CustomerID = c.ID, 
       CustomerName = c.Name 
      };); 
} 

하지만, 거기에 당신을 얻을해야 생각.

+0

시도해 볼 때 빌드 오류가 다시 발생합니다. "일관성없는 접근성 : 반환 유형"나는 그것이 GetInvoices() 메서드와 관련된 생성 된 도메인 서비스 메서드 때문이라고 생각합니다. 그런 다음 어떻게 업데이트, 삭제 및 삽입 기능을 적용 할 수 있습니까? – jammer

+0

컴파일 오류 링크 : http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k(CS0050);k(VS.ERRORLIST)&rd=true – jammer

+0

사용하지 마십시오. 생성 된 메서드를 사용하여 새 형식의 컬렉션을 반환하고 생성 된 메서드를 IQueryable 의 반환 형식으로 다시 설정 한 다음 IQueryable 의 반환 형식 인 GetCustomInvoices와 같은 메서드를 수동으로 호출하여 새 메서드를 만듭니다. 사용자 정의 형식을 반환하는 도메인 서비스에서 사용자 지정 메서드가 있으므로 문제가 해결되어야한다고 생각합니다. – Chris