方法采用类型来执行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)给我一个错误(无法解析符号实体)

方法采用类型来执行nhibernate查询

您可以尝试类似的东西

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不返回任何,这仍然会失败