2008-12-17 88 views
4
  1. 我有一个标签表,其模式只由ID和名称(唯一)组成。现在,从GUI用户可以为BlogPost输入标签。保存数据时,如果标签存储在一个字符串(名称)数组中,我希望将名称尚不存在的标签添加到Tag表中,并忽略名称已存在的标签,并取回所有标签实体的列表(包括现有的和新增的)。我怎么能在1个SQL往返中的Entity Framework中做到这一点?带实体框架的批量插入/更新

  2. 对于返回的标签,我想将它们关联到待添加的BlogPost对象(它刚刚实例化并且不通过EF存储在数据库中)。这一步骤还可能与#1合并单往返合并,还是必须发出另一个查询?

回答

6

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