我正在尝试创建一个方法来执行不同类的查询作为参数,如:
...
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)给我一个错误(无法解析符号实体)
答案 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没有返回任何内容
,这仍然会失败