1

以下是我的数据库表的片段:

帐户
--------------
     Account_Id
     Account_Types
     Customer_Id
     Row_Guid

客户
--------------
     Customer_Id
     First_Name
     Last_Name
     Balance
     Row_Guid

订单
--------------
     Order_Id
     Customer_id
     Row_Guid

我已经使用实体框架生成了这些类。之后,我开始在业务逻辑层编写一个实用程序类,该类将与表示层通信以执行添加删除等。例如,当用户单击表单中的“添加”按钮时,事件将调用此方法实用程序类。

由于所有表的功能都相似,但我可以创建一个通用接口,然后让每个表特定的实用程序类实现它。

我有以下内容: 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 ......我只能创建一个类?

如果我的界面设计有误,或者是否有众所周知的方法来实现此类任务,请告诉我。

先感谢您

4

0 回答 0