C# Linq到NHibernate存储库实施详细信息
我想为我的C# Linq到NHibernate存储库实施详细信息,c#,.net,linq,nhibernate,linq-to-nhibernate,C#,.net,Linq,Nhibernate,Linq To Nhibernate,我想为我的MyTypeRepository提供以下API: var myChosenInstance = _myRepository.FindOne(x => x.MyProperty == "MyValue"); ..以及用于在存储库中构造linq查询的lambda,然后由linq用于NHibernate 这可能吗?我的repository FindOne方法是什么样子的?类似这样的东西 var f = new Func<MyType, bool>(x => x.My
MyTypeRepository
提供以下API:
var myChosenInstance = _myRepository.FindOne(x => x.MyProperty == "MyValue");
..以及用于在存储库中构造linq查询的lambda,然后由linq用于NHibernate
这可能吗?我的repository FindOne方法是什么样子的?类似这样的东西
var f = new Func<MyType, bool>(x => x.MyProperty == "MyValue");
var query = from t in session.Linq<MyType>()
where f.Invoke(t)
select new { Id = c.Id, Name = c.Name };
//or...
var query = from c in collection
.Where(f)
select new { Id = c.Id, Name = c.Name };
var results = query.Single();
var f=newfunc(x=>x.MyProperty==“MyValue”);
var query=来自会话中的t.Linq()
其中f.Invoke(t)
选择新的{Id=c.Id,Name=c.Name};
//或者。。。
var query=来自集合中的c
.其中(f)
选择新的{Id=c.Id,Name=c.Name};
var results=query.Single();
公共实体类型FindOne(表达式谓词)
{
返回session.Linq().FirstOrDefault(谓词);
}
我想
session
变量的ISession
FirstOrDefault()
方法的工作实现(因为我还没有测试它来确认)repository
,那么您可以从方法中省略该类型参数。作为替代,是一个存储库接口和实现,它公开了泛型IQueryable
、ICollection
和IDictionary
接口
使用它时,您只需使用LINQ扩展方法进行查询,即repository.Single(lambda)
,等等
public EntityType FindOne<EntityType>(Expression<Func<EntityType,bool>> predicate)
{
return session.Linq<EntityType>().FirstOrDefault(predicate);
}