В Nhibernate вы можете выбрать случайную строку, например, так:
var query = "SELECT top 1 * from [Event] ORDER BY NEWID()";
ISQLQuery qry = session.CreateSQLQuery(query).AddEntity(typeof(Event));
Event randomevent = qry.List<Event>().First();
В активной записи мы должны работать немного усерднее и использовать следующее.
Event randomEvent = (Event)ActiveRecordMediator<Event>.Execute(
(session, instance) =>
{
var query = "SELECT top 1 * from [Event] ORDER BY NEWID()";
ISQLQuery qry = session.CreateSQLQuery(query).AddEntity(typeof(Event));
Event rand = qry.List<Event>().First();
return rand;
},new Event());
Просто замените event
с вашей сущностью.