2012-03-07 16 views
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からフィールドをプロジェクトする必要があります。 この投影を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クエリは、あなたが最後に変数iを選択しているので、基本的に請求書をフィルタするために参加し使用しています。私はあなたがあなたのLINQ文の結果をロードし、選択したいすべてのプロパティとカスタムクラスを作成することをおすすめ

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

:私はこの投稿への答えはあなた、あなたが望む結果を得るだろうと思いますカスタムクラスに追加します。

カスタムクラス:

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()メソッドに関連するGenerated Domain Service Methodのためだと私は信じています。だから、私はどのようにそれらの更新を適用することができます、削除、および機能を挿入する? – 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

関連する問題