-1

クラス ライブラリのオブジェクトを使用する WCF サービス アプリケーションを作成する必要があります。これらのオブジェクトは、WCF アプリケーションから提供され、ASP.NET で構築された Web アプリケーションから使用される必要があります。

データセットを使用する必要がありますが、このアプリケーションを構築する方法と、必要なさまざまなクラスを構築する順序がわかりません。最初にデータベース モデルを作成してからデータセット オブジェクトを作成するか、最初にオブジェクトを作成してから、作成したオブジェクト セットからデータ モデルを作成するか。また、このアプリケーションでストアド プロシージャを使用する必要があるため、使用するあらゆる設計アプローチでストアド プロシージャをサポートできる必要があります。

4

1 に答える 1

1

何よりもまず、使用したいテクノロジーを正確に定義する必要があると思います。あなたは、従来の ADO.NET データベース プログラミングの使用を余儀なくされていると思われる DataSet を言い続けています。この場合、オブジェクトを構築する順序は重要ではありません。

アプリケーションは、ADO.NET DataSet からハイドレートするオブジェクトを利用するか、または の新しい機能を使用してハイドレートされたLoad<Type>()オブジェクトを返すことができます。最初に、返したいオブジェクトを構築します。これらのオブジェクトは、データベースの考慮事項から独立している必要があります。(いつ、どこでデータベース モデルを構築するかは問題ではありません。現在または後で行うことができます...永続性の問題がオブジェクト モデリングやビジネス ロジックを妨げてはなりません)

例:

public class Book
{
     public string Title {get;set;}
     public DateTime PublicationDate {get;set;}
     public decimal Cost {get;set;}
     public virtual Author {get;set;}
}

public class Author
{
     public string Name {get;set;}
     public DateTime DateOfBirth {get;set;}
}

次に、リポジトリを構築してオブジェクトを返し、クエリを定義します。これをもう一度入力する代わりに、読むためのリンクをいくつか示します。

リポジトリとデータ マッパーのパターン

次に、DataSet を使用して、SQL クエリからであろうとストアド プロシージャからであろうと、違いはありません。

でも

これを行うには、Entity Framework 5RC または Entity Framework 4.1+ Code First について調査することをお勧めします。ADO.NET は、これを行う最善の方法ではありません。Code First 内での作業方法については、スタック上に大量のデータがありますが、オプションである場合は、そのパスを開始するためのリンクを 1 つまたは 2 つ提供します。

EntityFramework から複雑な結果セットを照会し、MVC で結果セットを表示する方法。

言い忘れたこと がありますが、WCF からライブ データセットを返すことはできませんし、返すべきではありません。これを行うためのハックがありますが、多くの理由でこれを行わないことを強くお勧めします. WCF は、永続性の問題から完全に独立し、ロジックのない純粋なデータを含む DTO (データ転送オブジェクト) を返す必要があります。これにより、誰かがオブジェクト DTO を持ち、.NET 環境での操作を強制されることを心配することなく、シリアライズおよびデシリアライズできます。WCF サービスは、任意の SOAP 対応言語で使用でき、その言語内のオブジェクトに逆シリアル化できる必要があります。

WCF からの応答は本質的に XML シリアル化されたオブジェクトであり、サービスのコンシューマーへの WCF 応答には存在しない、DTO に注入する追加の懸念事項を常に考慮する必要があります。

于 2012-07-30T15:15:41.663 に答える