如何在不首先从数据库中提取对象的情况下删除对象?
在另一个ORM中,我可以这样做:
session.Delete<User>(1); // 1 = PK
答案 0 :(得分:28)
将以下类添加到项目中:
public static class SessionHelper
{
public static void Delete<TEntity>(this ISession session, object id)
{
var queryString = string.Format("delete {0} where id = :id",
typeof(TEntity));
session.CreateQuery(queryString)
.SetParameter("id", id)
.ExecuteUpdate();
}
}
您现在可以使用session.Delete<User>(1)
。
答案 1 :(得分:7)
你可以这样做
User user = new User();
user.Id = 1;
session.Delete(user);
答案 2 :(得分:3)
试试这个:
var user = session.Load<User>(1);
session.Delete(user);
Load
将为具有标识符集的User对象创建代理。我不确定Delete
是否会在删除之前从数据库加载对象,我现在无法测试它。
答案 3 :(得分:2)
查看IQuery对象上的ExecuteUpdate方法。
IQuery q = session.CreateQuery ("delete from User where Id = 1");
q.ExecuteUpdate();
应删除对象而不将其取回。
答案 4 :(得分:0)
ExecuteUpdate()
上有IQuery
方法,ISession.Delete()
上有一个重载方法,它接受一个定义删除查询的字符串