Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在业务逻辑层实现通用实用程序类以与DAL通信_C#_Sql Server_Entity Framework_N Tier Architecture - Fatal编程技术网

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

C# 在业务逻辑层实现通用实用程序类以与DAL通信,c#,sql-server,entity-framework,n-tier-architecture,C#,Sql Server,Entity Framework,N Tier Architecture,以下是我的数据库表的一个片段: 帐户 -------------------------- 帐户Id 账户类型 客户识别码 行Guid 客户 -------------------------- 客户识别码 名字 姓氏 余额 行Guid 订单 -------------------------- 订单号 客户识别码 行Guid 我已经使用实体框架生成了这些类。之后,我开始在业务逻辑层编写一个实用程序类,该类将与表示层通信以执行添加删除等操作。例如,当用户单击表单中的“添加”按钮时,事件将从该实用

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

帐户
--------------------------
帐户Id
账户类型
客户识别码
行Guid

客户
--------------------------
客户识别码
名字
姓氏
余额
行Guid

订单
--------------------------
订单号
客户识别码
行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);
     }
}
items数组包含该类型的组件。对于Account,它将包含(Account_id、Customer_id、Account_type、Row_guid),types数组包含组件的类型,例如,对于Account,它将包含(long、long、long、guid)

公共类实用程序:IUtility
{
公共作废增加额(BillingDBEntities billingEntity,科目)
{
billingEntity.ACCOUNTS.AddObject(项目);
}
public void AddEntity(BillingDBEntities billingEntity,对象[]项,类型[]类型)
{
//我应该在这里写什么????
}
..
.
.
.
}
问题:如何实现该方法?如何在方法内部调用
BillingDBEntities
,以设置对象变量?有没有一种方法可以代替创建实用程序,实用程序。。。我只能创建一个类

如果我的界面有错误的设计,或者如果有众所周知的方法来实现这样的任务,请告诉我


提前感谢您

您正在为Entity Framework创建一个通用存储库。如果您在上面搜索,您将发现许多实现。例如。
AddEntity(BillingDBEntities billingEntity, object[] items, Type[] types);
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????
        }
..
.
.
.
}