Куча распределяется между всеми потоками (хотя распределители, такие как TCMalloc , используют специфичные для потока подмножества кучи для кратковременных распределений для эффективности). Однако bad_array_new_length
не об исчерпании памяти: речь идет о невероятно больших или отрицательных запросах на выделение.
LINQ к поддержке SQL используют с UDFs, если, именно это Вы имеете в виду. Просто перетащите UDF на поверхность разработчика, и Вы сделаны. Это создает метод сопоставления для контекста данных, отмеченного [Function(..., IsComposable=true)]
или подобный, говорящий LINQ-SQL, что это может использовать это в запросах (отмечают, что EF не поддерживает это использование).
Вы затем использовали бы его в своем запросе как:
var qry = from cust in ctx.Custs
select new {Id = cust.Id, Value = ctx.GetTotalValue(cust.Id)};
который станет TSQL что-то как:
SELECT t1.Id, dbo.MyUdf(t1.Id)
FROM CUSTOMER t1
(или поблизости).
То, что это компонуемо, означает, что можно использовать значение в запросах - например, в a Where()
/WHERE
- и тем самым уменьшите данные, возвращенные из сервера (хотя, очевидно, UDF должен будет все еще быть выполнен в некотором роде).
Вот подобный пример, показывая pseudo-UDF при использовании на контексте данных, иллюстрируя, что версия C# метода не используется.
На самом деле я в настоящее время смотрю на такой UDFs для обеспечения "из модели" данных компонуемым способом - т.е. конкретной части системы нужен доступ к некоторым данным (который, оказывается, находится в той же базе данных), который не является действительно частью той же модели, но который я хочу JOIN
интересными способами. У меня также есть существующий SPS с этой целью..., таким образом, я смотрю на портирование их SPS к табличному UDFs, который обеспечивает уровень контракта/абстракции, окружающего данные из модели. Таким образом, потому что это не часть моей модели, я могу только получить его через UDF - все же я сохраняю способность составить это с моей обычной моделью.
Я полагаю, что эта документация MSDN - то, что Вы после (как часть этой более широкой темы вызывания пользовательских функций в LINQ к SQL). Не может сказать, что я сделал это сам, но это звучит правильным...