方法采用类型来执行nhibernate查询
本文关键字:执行 nhibernate 查询 类型 方法 | 更新日期: 2023-09-27 18:29:34
我正在尝试创建一种方法,用不同的类作为参数来执行nhiberate查询,如:
...
deleteFirst<ClientInfo>();
deleteFirst<SellerInfo>();
deleteFirst<AdministratorInfo>();
...
public void deleteFirst<T>() where T: ClientInfo
{
var clients = Session.QueryOver<T>().Where(x => x.Id != 0).AndRestrictionOn(x => x.Entity).IsNotNull.List();
Session.Delete(clients[0]);
}
然而,这里它只适用于ClientInfo类。我所有的类都扩展了BaseInfo类
基类也没有这个Entity参数,所以如果我使用public void deleteFirst(),其中t:BaseInfo
(x=>x.Entity)给我一个错误(无法解析符号实体)
您可以尝试类似的东西
public void deleteFirst<T, U>(Func<T, U> entityCondition) where T: BaseInfo
{
var toDelete = Session.QueryOver<T>().Where(x => x.Id != 0)
.AndRestrictionOn(entityCondition).IsNotNull.List();
Session.Delete(toDelete[0]);
}
调用
deleteFirst<ClientInfo, Entity>(x => x.Entity);
尽管如果toDelete不返回任何,这仍然会失败