使用实体框架批量插入/更新

时间:2008-12-17 06:44:51

标签: linq entity-framework

  1. 我有一个标签表,其架构仅包含ID和名称(唯一)。现在,从GUI用户可以输入BlogPost的标签。保存数据时,标签存储在字符串(名称)数组中,我想在Tag表中添加名称尚不存在的标签,并忽略名称已存在的标签并返回所有标签实体的列表(包括现有的和新增的)。如何在仅一次SQL往返中在Entity Framework中执行此操作?

  2. 对于返回的标签,我想将它们与要添加的BlogPost对象(它刚刚实例化,而不是通过EF存储在DB中)相关联。是否仍然可以将此步骤与单个往返中的#1组合使用,还是必须发出另一个查询?

1 个答案:

答案 0 :(得分:6)

我认为实体框架根本不会进行批量插入(目前)。因此,如果必须保持DB往返次数如此之低,则可能必须使用存储过程或数据库触发器。幸运的是,Entity Framework支持返回实体类型的存储过程。 MSDN上有关于此的文档。您可以创建一个proc,它接受一个标签的字符串列表并返回标签实体实例。或者,您可以在post表中添加VARCHAR列以获取分隔的标记列表,并在触发器中对其进行解析。