包装旧式SQL Server数据库的最佳Ruby ORM?

包装旧式SQL Server数据库的最佳Ruby ORM?,sql,sql-server,ruby,sequel,Sql,Sql Server,Ruby,Sequel,我发现了,听起来几乎和我正在做的一样。关于datamapper是否可以通过dataobjects支持SQL Server,我听到了各种各样的答案。基本上,我们有一个应用程序,它在SQL Server中使用一致的结构化数据库、一致的命名表等。我们正在制作各种各样的工具和东西来与之交互,其中一些是远程的,因此我决定我们需要创建一些通用的、简单的访问点来在SQL Server应用程序上执行读/写操作,因为它的API都是C#和其他我不喜欢的东西 现在我的问题是,如果有人有任何他们知道的例子或项目,rub

我发现了,听起来几乎和我正在做的一样。关于datamapper是否可以通过dataobjects支持SQL Server,我听到了各种各样的答案。基本上,我们有一个应用程序,它在SQL Server中使用一致的结构化数据库、一致的命名表等。我们正在制作各种各样的工具和东西来与之交互,其中一些是远程的,因此我决定我们需要创建一些通用的、简单的访问点来在SQL Server应用程序上执行读/写操作,因为它的API都是C#和其他我不喜欢的东西

现在我的问题是,如果有人有任何他们知道的例子或项目,ruby ORM可以通过定义每个模型的PKEY、FKEY、表名等约定为另一个应用程序的遗留数据库创建模型。Sequel是我在SQL Server上使用过的唯一ORM,但从来没有做过类似的事情。有什么建议吗?

是一个应该能够做到你所描述的事情的选项

所以像这样的事情应该是可能的:

class Order < ActiveRecord::Base
  establish_connection { #a hash describing your SQL Server connection attributes }
  set_table_name 'PRODUCT_ORDER' # or whatever
  set_primary_key :PROD_ORD_ID
  has_many :order_lines
end

class OrderLine < ActiveRecord::Base
  establish_connection { #as above }
  set_table_name 'ORDER_LINE'
  belongs_to :order
  has_many :products # etc...
end

order = Order.first
order.order_lines.each { |line| puts line }
类顺序
我不能给你一个完整的例子,因为我刚刚开始尝试在MS SQL Server上使用Ruby,但根据我的经验和你所说的,我建议使用Sequel的模型工具

Sequel肯定支持MS SQL Server,并针对其进行了测试,但使用Active Record时情况似乎不太清楚。我还没有使用DataMapper,所以不能对此发表评论。据我所知,Ruby唯一的ORM是DataMapper、Sequel、Active Record 2和Active Relation/Active Record 3(新的Rails 3数据访问工具)


是的,但在核磁共振成像1.8.7中对我根本不起作用。微软的IrRuuBuy团队正在使用这个适配器的版本来在Rails上运行带有RMS的SQL Server,因此您可以考虑在IrruRube组合上尝试一个活动记录。IronRuby目前正处于发布候选阶段,因此这应该可以工作,尽管目前肯定还有很多bug修复工作在进行。

Sequel不会自动创建模型,但您可以编写一个扩展,它将Sequel::Database#表和Sequel::Database#模式(针对每个表)的输出作为扩展,并对键和表名进行了一些分析,以猜测关联。Sequel在默认情况下不这样做的原因是它不可能在所有情况下都正确执行。但是,如果您的数据库始终遵循某些约定,您当然可以让它正常工作。

谢谢。我决定使用Sequel,因为我以前使用过它,我可以用非常少的代码将它映射到我的模型。我不得不在本周早些时候针对遗留的Oracle数据库这样做。正如Jeremy所说,使用tables()方法获取表列表,然后循环遍历它们,并使用schema(:tablename)方法获取列及其定义。提示:使用
db\u schema=Hash[*db.schema(:tablename).flatte]
将schema()的输出强制为哈希,这样更容易遍历列。