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

C# 创建通用实体框架插入方法,c#,entity-framework,C#,Entity Framework,我正在使用实体框架与数据库接口,我想创建一个通用的插入函数 我已经让它与独立表一起工作,即向Customer表添加一条新记录,该记录使用Set函数获得正确类型的表。但问题是交叉引用表被映射到实体框架中的列表中——符合面向对象的接口(所以我理解为什么)。然而,我如何解释一般庄园中的此类插入,因为通常我将处理整个实体。然而,我有一些场景需要处理实体中的列表 当然,我可以创建特定的方法来处理这些特定的情况,但我真的想避免这样做 我的一个想法是创建一个类型、操作的字典,类型是与服务可能接收的列表插入相关

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

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

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

我的一个想法是创建一个类型、操作的字典,类型是与服务可能接收的列表插入相关联的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为链接寄养照料者和检查记录的交叉引用表生成的列表属性。在通用插入函数中如何解释这种情况

你有你想要的通用代码吗?@WillemdeJong-什么是抱歉?我已经创建了通用插入,效果很好。然而,交叉参考表并非如此,例如,要添加新的客户“检查”,您必须使用那里的ID获取客户记录,然后访问检查列表(EF也映射此类交叉参考表)。这回答了你的问题吗/可能重复@科林-不,这个问题与为标准实体创建通用插入有关,我的问题是针对交叉引用实体以及它们通过EF=)映射的方式,那么我不理解这个问题。有可能重复@WillemdeJong的请求。您能否为“交叉引用表”显示一些代码,这些代码不是通用的,您希望使其成为通用的?