DataMapper,如何创建多条记录?

时间:2010-06-30 04:03:16

标签: ruby datamapper

我的示例datamapper类

class Simple
  include DataMapper::Resource
  property  :id, Serial
  property  :uid, Integer
end

我想添加一个数组id uid。

items=[1,2,3,4,5,6,7,8,9,1,1,1,2,2,2,3]

如果我想搜索数组中的任何id,我会做类似

的事情
Simple.all(:uid.in=>items) 

有没有办法在创建多个记录时执行相同操作,例如:

Simple.create(:uid=>items) #this doesn't work by the way

解决这个问题的方法是:

items.each{|item|Simplel.create(:uid=>item)} 

但这不可能有效,必须有更好的方法。

2 个答案:

答案 0 :(得分:2)

DataMapper中没有更简单的方法。大多数ORM不会为批量操作而烦恼,因为它们通常需要特定于数据库的实现。其中少数ORM之一是SQLAlchemy:http://www.sqlalchemy.org/docs/05/sqlexpression.html#executing-multiple-statements

答案 1 :(得分:0)

我不知道SQL层上有任何批量插入操作。想想data_mapper是抽象层的SQL数据库。请注意,每个数据库作者/制造商都实现了自己的工具(例如,SQLLDR for Oracle,BCP for MS SQL Server)。

抽象层无法将其带入单个界面。