我通过 BLToolkit 访问数据库。我的一张桌子有:
- 字段:Id、TeamId、PlayerId、Val1、Val2
- 主键 - 字段 ID,自动递增
- 复合唯一键,由 2 个字段 TeamId 和 PlayerId 组成
- 数据字段 Val1、Val2
我创建了对象列表:
List<MyObj> objs = new []{
new MyObj{TeamId=2, PlayerId=3, Val1=1234, Val2=111},
new MyObj{TeamId=2, PlayerId=4, Val1=2345, Val2=444},
new MyObj{TeamId=2, PlayerId=5, Val1=3456, Val2=666},
};
我可以使用将所有这些对象插入数据库
db.InsertBatch(objs);
但是某些具有相同复合键的记录可能已经在 DB 中,因此我希望自动执行这些对象的更新,而不是 INSERT。
我知道 BLToolkit 有 InsertOrUpdate 和 InsertOrReplace,但它们都只使用 1 个对象。
有什么方法可以插入或更新/替换 1 个对 DB 的请求中的对象列表?
谢谢你。
PS 实际上,我在 objs 中列出的数据不是以编程方式创建的,它们是最近根据查询其他表从 DB 中提取的。也许与获取这些数据一起,我应该尝试获取现有对象的 ID 并使用此信息来决定插入或更新?