1

以下は、私のデータベース テーブルの一部です。

アカウント
--------------------------
     Account_Id
     Account_Types
     Customer_Id
     Row_Guid

顧客
--------------------------
     Customer_Id
     First_Name
     Last_Name
     Balance
     Row_Guid

注文
--------------------------
     Order_Id
     Customer_id
     Row_Guid

Entity Framework を使用してクラスを生成しました。その後、プレゼンテーション層と通信して追加削除などを行うユーティリティクラスをビジネスロジック層に書き始めました。たとえば、ユーザーがフォームの「追加」ボタンをクリックすると、イベントはこれからメソッドを呼び出しますユーティリティ クラス。

機能はすべてのテーブルで似ているため、ジェネリック インターフェイスを作成して、各テーブル固有のユーティリティ クラスに実装させることができます。

私は次のものを持っています: BillingDBEntitiesすべての「ドメインオブジェクト」を含むエンティティフレームワークによって生成されたクラスです。このクラスには、データベース テーブルを表す ACCOUNT、CUSTOMER などの内部オブジェクトがあります。

これは私のユーティリティインターフェースです:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Objects.DataClasses;
using DataAccessLayer;
namespace BusinessLogicLayer.Implementations
{
    public interface IUtility<T> where T : EntityObject
    {
        void AddEntity(BillingDBEntities billingEntity, T item);
        void AddEntity(BillingDBEntities billingEntity, object[] items, Type[] types);

        void RemoveEntity(BillingDBEntities billingEntity, T item);
        void RemoveEntity(BillingDBEntities billingEntity, object[] items, Type[] types);

        void UpdateEntity(BillingDBEntities billingEntity, object[] items, Type[] types);
     }
}

void AddEntity(BillingDBEntities billingEntity, T item);T のようなメソッドの場合、単純に ACCOUNT、ORDER、CUSTOMER などに置き換えられます。ただし、void のようなメソッドの場合は

AddEntity(BillingDBEntities billingEntity, object[] items, Type[] types);

items 配列には、型のコンポーネントが含まれています。Account の場合は (Account_id、Customer_id、Account_type、Row_guid) が含まれ、types 配列にはコンポーネントのタイプ (たとえばアカウントの場合は long、long、long、Guid) が含まれます。

public class Utility : IUtility<ACCOUNT>
    {
        public void AddEntity(BillingDBEntities billingEntity, ACCOUNT item)
        {
            billingEntity.ACCOUNTS.AddObject(item);
        }
        public void AddEntity(BillingDBEntities billingEntity, object[] items, Type[] types)
        {
            //What should I write here????
        }
..
.
.
.
}

質問: メソッドを実装するにはどうすればよいですか? BillingDBEntitiesオブジェクト変数を設定するメソッド内でどのように呼び出されますか? Utility 、 Utility 、...を作成する代わりに、1つのクラスのみを作成できる方法はありますか?

インターフェイスのデザインが間違っている場合、またはそのようなタスクを実装するためのよく知られた方法がある場合は教えてください。

前もって感謝します

4

0 に答える 0