0

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

我已经让它与独立表一起使用,即向客户表添加一条新记录,该表使用 Set 函数来获取正确类型的表。但问题是交叉引用表被映射到实体框架中的列表中 - 符合面向对象的接口(所以我明白为什么)。但是,我如何才能在通用庄园中解释此类插入,因为通常我将处理整个实体,但是我有一些场景需要处理实体内的列表。

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

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

我对 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 为链接寄养照顾者和检查记录的交叉引用表生成的列表属性。如何在通用插入函数中考虑这样的场景?

4

0 回答 0