哪个.Net ORM支持sql如批量插入/更新/删除?

时间:2011-02-24 15:21:54

标签: c# tsql orm

哪个ORM支持sql,如批量插入/更新/删除:

var user=new UserInfoFields();
var update=user.Update().Set
(
   user.Field1=1,
   user.Field2="xxxx"
).Where(user.Name=="Jim" && user.Enable==true);

update.Excute();

相应的T-sql是:

UPDATE UserInfo 
SET 
    Field1=1,
    Field2="xxxx"
WHERE Name='Jim' and Enable=1

3 个答案:

答案 0 :(得分:5)

Checkout BLToolkit - > BLToolkit Linq Extensions - Update

db.Employee
    .Where(e => e.Title == "Spectre")
    .Update(e => new Northwind.Employee
    {
        Title = "Commander"
    });

db.Employee
    .Where(e => e.Title == "Spectre")
    .Set(e => e.Title, "Commander")
    .Update();

=

UPDATE
    [e]
SET
    [Title] = 'Commander'
FROM
    [Employees] [e]
WHERE
    [e].[Title] = 'Spectre'

现在已经使用了2到3年了,它很棒:D

首先阅读此内容 - > High Level Vision, Global Architecture Strategy & Concept Model Design

答案 1 :(得分:2)

PHP ActiveRecord有这样的东西,但那是PHP。 Linq2SQL可以扩展为执行更简单的批量更新/删除,但它不是“库存”行为。以下是有关该主题的文章的链接:http://www.aneyfamily.com/terryandann/post/2008/04/Batch-Updates-and-Deletes-with-LINQ-to-SQL.aspx。我知道NHibernate没有内置任何内容,但同样,你可以扩展Linq提供程序,NH也允许HQL和SQL查询作为字符串,包括批量更新/删除(唯一的问题是它们是“魔术字符串” “这不是编译器检查的。”

这种行为实际上违背了ORM的目的。 ORM不存在为所有可能的SQL操作提供编译器检查的查询,而是为单个对象实例的CRUD操作提供“黑盒”封装逻辑,例如,将对象请求转换为检索必要数据的SQL并保湿物体。批量和批量操作无论如何都不是他们的强项。

答案 2 :(得分:1)

我知道的大多数ORM缺少批量更新功能,如果您更喜欢使用像我这样的EnityFramework,您可以使用Entity Framework Extended Library在EntityFramework上扩展许多功能,包括批量更新和删除以及Futre查询。