Я смотрю на асинхронный просмотр некоторого нашего существующего кода.К сожалению, мой опыт работы с NHibernate отсутствует.Большая часть вещей NHibernate была легкой, учитывая, что NHibernate 5 имеет большую поддержку асинхронного.Я, однако, застрял.
Первоначально, мы делаем что-то подобное, используя нашу инъекцию зависимостей:
private readonly IRepository repository;
public MovieRepository(IRepository repository)
{
this.repository = repository;
}
public Movie Get(int id)
{
return (from movie in repository.Query<Movie>()
select new Movie
{
ID = movie.ID,
Title = movie.Title,
Genre = new Genre
{
ID = movie.Genre.ID,
Name = movie.Genre.Name,
},
MaleLead = movie.MaleLead,
FemaleLead = movie.FemaleLead,
}).FirstOrDefault();
}
//Repository Query method in Repository.cs
public IQueryable<TEntity> Query<TEntity>() where TEntity : OurEntity
{
session = session.OpenSession();
return from entity in session.Query<TEntity>() select entity;
}
Это прекрасно работает для наших текущих применений.Мы пишем вещи таким образом, чтобы поддерживать контроль над нашими запросами, особенно связанные с более сложными объектами, гарантируя, что мы получим именно то, что нам нужно.
Я пробовал несколько вещей, например, заставить метод Query возвращать Task> и используя метод ToListAsync (), однако, поскольку я возвращаю его как список такого рода, я не могу запросить его.
Я уверен, что что-то пропустил.Если кто-нибудь может мне помочь, я был бы признателен.