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

时间:2014-11-06 11:06:34

标签: c# .net generics

我正在尝试创建一个方法来执行不同类的查询作为参数,如:

 ...
 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 =&gt; x.Entity)给我一个错误(无法解析符号实体)

1 个答案:

答案 0 :(得分:0)

您可以尝试类似

的内容
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没有返回任何内容

,这仍然会失败
相关问题