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

Buu*_*yen 4 linq entity-framework

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

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

Cra*_*ntz 6

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