创建通用实体框架插入方法

时间:2013-10-09 08:51:39

标签: c# entity-framework

我正在使用实体框架与数据库接口,我想创建一个通用的插入函数!

我已经使用独立表,即向Customer表添加一条新记录,该表使用Set函数来获取正确类型的表。但问题是交叉引用表被映射到实体框架中的列表 - 符合面向对象的接口(所以我理解为什么)。但是,我如何在一般庄园中考虑这样的插入,因为一般情况下我将处理整个实体,但是我有一些场景需要处理实体内的列表。

当然我可以创建具体方法来处理这些特定情况,但我真的想避免这样做!

我所拥有的一个想法是创建一个 Type,Action 的字典,该类型是与服务可能接收的列表插入相关联的DTO的类型,并且该操作是特定的插入代码,用于处理列表,这样我仍然可以使用泛型插入函数,并检查字典中是否有任何“插入规则”应该执行与通用插入代码相反。这种方式从客户端编程的角度来看,只使用了一个插入函数。但这还需要编写特定的插入代码 - 我真的很想避免。

我对EF没有那么多经验 - 所以我想知道的是我有什么更清洁的选择来解决这个问题吗?

代码演示了我的问题:

普通通用插入 -

public void InsertRecord(object newRecord, )
    {
        using (PIRSDBCon db = new PIRSDBCon())
        {
            var table = db.Set(newRecord.GetType());
            table.Add(newRecord);                
            db.SaveChanges();
        }
    }

正如您所见,它处理表格中的标准插入

插入交叉参考表 -

public void InsertCarerCheck(int carer_id, Check newCheck)
    {            
        using (PIRSDBCon db = new PIRSDBCon())
        {
            Foster_Carers carer_record = (from c in db.Foster_Carers
                             where c.foster_carer_id == carer_id
                             select c).SingleOrDefault();


            carer_record.Checks1.Add(newCheck);
            db.SaveChanges();
        }            
    }

Checks1是由EF生成的列表属性,用于链接寄养护理者和检查记录的交叉参考表。如何在通用插入函数中考虑这样的场景?

0 个答案:

没有答案