Это полностью зависит от стратегии, которую вы используете (ActiveRecord / LinqTemplates / SimpleRepository)
ActiveRecord: каждая отдельная запись хранит свой собственный экземпляр в репозитории, что приводит к увеличению памятииспользование для больших списков.
LinqTemplates: Гораздо меньше использования памяти, у вас есть экземпляр вашей базы данных, который содержит схему каждой таблицы и чистые данные.
SimpleRepository Еще меньше, поскольку экземпляр репо ничего не знает о вашей базе данных.Это почти только использование чистых данных в памяти.
Я бы предложил использовать оба шаблона - ActiveRecord и Linq.Linq для запросов больших списков и ActiveRecord для редактирования отдельных записей или небольших списков (<100 записей). </p>
SubSonic не выполняет кеширование по своему дизайну, поэтому я не стал бы беспокоиться об этом.Но самое замечательное в Linq (для всех трех стратегий) заключается в том, что вы не попадаете в базу данных, пока не нуждаетесь в данных, поэтому вы можете контролировать, сколько памяти вы используете.
Пример:
var db = new NorthwindDb();
// does not hit the database (just an expression)
// since we only need ProductId and ProductName in this example,
// there is no need to pull the entiry Product from the database.
var query = from p in db.Products
where p.CategoryId == 5
select new {p.ProductId, p.ProductName };
// executes: SELECT COUNT(*) FROM products WHERE categoryid = 5;
var count = query.Count();
// does not execute anything
var top10 = query.Take(10);
// executes: SELECT productid, productname
// FROM products WHERE categoryid = 5 LIMIT 10
// LIMIT = MySQL paging, don't know how to write that for SQLServer
// p in this example is not a product, but an anonymous type with
// only two properties (ProductName and ProductId)
foreach (var p in top10);
Console.WriteLine("ProductId {0} Name {1}", p.ProductId, p.ProductName);
Обновление: Я не знаю, какое приложение вы разрабатываете, но если вам нужно отобразить данные в DataGrid, я бы предложил использовать devexpress XtraGrid (доступен для WinForms, WPF / Silverlight и ASP.net), который имеет ServerMode, который очень хорошо работает с LinqTemplates SubSonic (поскольку он может быть привязан к IQuerable и сам обрабатывает разбиение на страницы / сортировку / фильтрацию на IQuerable и требует только нескольких записейза один раз. Это значительно сократило объем памяти и производительность загрузки нашего приложения (которое загрузило кучу записей в таблицу данных).