在业务逻辑层中实现通用实用程序类以与DAL通信

时间:2013-01-09 14:01:42

标签: c# sql-server entity-framework n-tier-architecture

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

帐户
--------------------------
ACCOUNT_ID
Account_Types
CUSTOMER_ID
Row_Guid

客户
--------------------------
CUSTOMER_ID

将First_Name 姓氏
平衡
Row_Guid

订单
--------------------------
ORDER_ID
CUSTOMER_ID
Row_Guid

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

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

我有以下内容: 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数组包含组件的类型,例如它的帐户(长,长,长,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,...我只能创建一个类?

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

提前谢谢

0 个答案:

没有答案
相关问题