假设我有一个将 Id 与多个项目相关联的数据库表。用最喜欢的食物说 ID。所以看起来像
Id FoodId
----------
1 1
1 54
1 543
2 42
2 4234
ETC
我可以使用我的选中列表框选择/取消选择最喜欢的食物值
当我在编辑项目后更新数据库时,我是否返回并删除表中 ID 为 1 的所有先前条目,然后输入整个新集合,或者有更好的方法吗?
最简单的方法是你的方法。但它也是最慢的,并且会产生冗余的数据库操作。正确的方法是让新旧列表在内存中创建相应delete
的insert
语句。
DELETE
语句。 INSERT
语句。 DELETE
FROM favfood
WHERE id=@Id and foodid not in(new_list_of_food_ids)
// serialized new_list_of_food_ids
INSERT INTO favfood(id,foodid)
(SELECT @Id, [int]
FROM OPENXML (@idoc, '/ArrayOfInt/int',1)
WITH ([int] int '.')
where [int] not in (select foodid from favfood where id=@Id))