哪个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
答案 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查询。