【发布时间】:2011-02-11 07:19:47
【问题描述】:
是否有一个 ORM绑定到 MS SQL 2008+,生成 .NET 代码,利用 MS SQL 的特定功能?
我对 2 个功能特别感兴趣:
(1) 通过键获取一组记录,不会映射到“select in”查询。
- 这可以通过在 2005+ 中使用 OPENXML 或在 2008+ 中使用 Table-Valued Parameters 来实现
(2) 通过对数据库的单个请求插入多个记录(这与 Bulk-Insert 相似但不同)。例如:
Customer[] customers = CreateSomeCostomers();
dataManager.Save(customers);
所以在客户端准备好SQL相关代码,然后全部发送到SQL服务器。
顺便说一句,存储过程是不可能的。
如果您 stackoverflowers 对我有任何建议,我会很高兴。
谢谢!
更新:
我正在寻找一个完整解决方案,而不是我可以根据自己的需要定制的可扩展框架/产品。所以自定义NHibernate/linq2sql/etc。通过编写我自己的代码实现不适合我的需要。
关于接受的答案的几句话。
似乎目前所有的 ORM 框架都试图涵盖多个数据库/技术。所以我想没有现成的解决方案可以满足我的需求,至少没有开箱即用的解决方案。
我了解@Ryk,指向 Fluent NHibrenate,认为这种解决方案确实存在,这是配置问题。我查看了 NHibernate 和 Fluent NHibernate 的源代码,但没有发现任何支持我正在寻找的功能的东西。例如,我在两个源代码中都找不到关键字OPENXML 或sp_xml_preparedocument。所以也许我错过了一些东西,但我不这么认为。由于赏金是有时间限制的,我无法对 FN 或 NH 进行更深入的调查。我仍然认为那里不支持这些功能。
因此,根据我的最佳理解,公认的答案是,没有这样的事情。声称这一点的最通用的答案是@Cade Roux 的答案。
感谢大家的参与。 干杯!
【问题讨论】:
-
如果 NHibernate 不支持这些功能,扩展它以支持这些功能可能不会有太大的难度。
-
@Michael Maddox - Ayende 在这里谈到了 NHibernate 的 TVP 问题:ayende.com/Blog/archive/2008/08/26/…
标签: .net sql-server orm coupling