.rc файлы не передаются в gcc, они должны обрабатываться windres (gcc эквивалент MS 'rc.exe), вы используете windres для создания .o файла из .rc и затем передаете его. o к gcc (или ld) как часть вашей последней стадии ссылки.
windres my_file.rc my_file.o
gcc -o my_final <other parameters> my_file.o
Есть и другие потенциальные аргументы для windres, посмотрите на man-страницу для деталей.
Чтобы ответить на ваш вопрос: да, это приводит к огромным наборам результатов.
Я предлагаю:
Хотя это может быть не совсем то, что вы ищете, я бы порекомендовал прочитать эту статью:
Жадная загрузка агрегата с множеством дочерних коллекций
Если вы посмотрите вокруг остальной части на этом сайте вы найдете еще больше сообщений, в которых обсуждается активная загрузка и другие замечательные вещи о nHibernate.
Нашел решение, но оно не очень хорошее. Сначала я нахожу все идентификаторы счетов-фактур, затем использую их в мультизапросе, а затем, в конце, фильтрую результаты через HashedSet. Из-за большого количества элементов иногда я не мог использовать обычный Restriction.In и был вынужден отправлять его в виде строки.
Какие-либо предлагаемые настройки?
var criteria = Session.CreateInvoiceBaseCriteria(query, archived)
.SetProjection(Projections.Id());
var invoiceIds = criteria.List<int>();
if (invoiceIds.Count > 0)
{
var joinedIds = JoinIDs(criteria.List<int>()); // To many ids to send them as parameters.
var sql1 = string.Format("from Invoice i inner join fetch i.States where i.InvoiceID in ({0}) order by i.{1} {2}", joinedIds, query.Order, query.OrderType.ToString());
var sql2 = string.Format("from Invoice i inner join fetch i.AttestationRequests where i.InvoiceID in ({0})", joinedIds);
var sql3 = string.Format("from Invoice i inner join fetch i.Attestations where i.InvoiceID in ({0})", joinedIds);
var invoiceQuery = Session.CreateMultiQuery()
.Add(sql1)
.Add(sql2)
.Add(sql3);
var result = invoiceQuery.List()[0];
return new UniqueFilter<Invoice>((ICollection)result);
}
return new List<Invoice>();