我正在使用实体框架与数据库接口,我想创建一个通用的插入函数!
我已经使用独立表,即向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生成的列表属性,用于链接寄养护理者和检查记录的交叉参考表。如何在通用插入函数中考虑这样的场景?