0

次の構造を使用して Web サイトを作成しました。

クラス プロジェクト- DataAccessLayer と呼ばれる > データセットを追加する > GetcustomersByID(ID) というクエリを使用して tableAdapter と Datatable を追加する

クラス プロジェクト- BusinessLayer の呼び出し > DataAccessLayer を呼び出し、クエリ GetcustomersByID(ID) の CustomerDataTable で結果を返すコードを作成しました。

Web プロジェクト- BusinessLayer への参照を追加しました。

この時点から、ObjectDataSource を追加してビジネス層に関連付け、適切なメソッド (この例では GetCustomersByID(ID)) を呼び出すことができます。

次に、すべての顧客データを顧客オブジェクトにロードすることを望んでいたレイヤーを追加したいと考えました。そこで、 Customersという別のクラスを追加し、すべてのフィールドを [B] プロパティ [/B] (CustomerID、FirstName、Surname、AddressOne など) として追加します。

BusinessLayer からこのオブジェクトにすべての詳細をロードするにはどうすればよいので、次のようなコードを記述できます。

Dim myCustomer as Customer
....
...... Some code to get the data and load it into the Customer object.

If myCustomer.Firstname = "Bob" Then
....
End If
4

2 に答える 2

0

このアプリをどの程度拡張したいかはわかりませんが、レイヤーを構造化する方法を決定するために、アクティブ レコード パターンまたはドメイン モデル パターンを調べることを検討してください。

データ テーブルに入力する代わりに、DTO または POCO オブジェクトを使用して、Dapper.NET などの ORM を使用して直接データを入力することができます。次に、AutoMapper を使用して、DTO からビジネス オブジェクトを設定できます。

Active Record に移行すると、ビジネス オブジェクトにデータを直接呼び出して、それ自体を入力させることができます。

無数のさまざまなことを行うことができます。

また、フロント エンドでビジネス ロジックを直接呼び出すのではなく、サービス レイヤーまたはファサード レイヤーを呼び出したくない場合もあります。

または、リレーショナル データ ソースを削除し、RavenDB や Mongo などのドキュメント データベースを使用して、冗長なレイヤー呼び出しをまとめて削除することをお勧めします。固定された行ではなく、データの柔軟なオブジェクトを格納します。そうすれば、ビジネス オブジェクトを設定するのが非常に簡単になることがわかります。

于 2013-02-10T17:21:37.407 に答える
0

データ テーブルからデータを引き出すには、次の操作を実行できます。

Customer customer = dt.AsEnumerable().Select(row => 
        // construct and map all the properties
        new Customer
        {
            Id = row.Field<int>("Id"),
            Firstname = row.Field<string>("Name")
        }).FirstOrDefault();

VB.NET では次のようになります (ただし、私は VB の専門家ではありません)。

Dim customer As Customer = dt.AsEnumerable().[Select](Function(row) New Customer() With     { _
    Key .Id = row.Field(Of Integer)("Id"), _
    Key .Firstname = row.Field(Of String)("Name") _
}).FirstOrDefault()
于 2013-02-10T16:36:53.890 に答える