У меня, кажется, странная проблема. Я новичок в Linq-to-SQL, поэтому мне может не хватать чего-то очевидного.База данных Linq-to-SQL DataContext, похоже, автоматически заполняет таблицу
У меня есть DataContext dbml, представляющий таблицы в моей базе данных, и одна из этих таблиц представляет таблицу журналов, которая накапливает много записей. Просто добавление этой таблицы в dbml, похоже, заполняет каждую запись из базы данных в объект DataContext (и, следовательно, мою модель просмотра, поскольку datacontext является членом модели viewmodel).
Я никогда не замечал этого, пока не сериализовал viewmodel в XML и заметил, что размер файла был довольно большим для данных, содержащихся в viewmodel.
Открытие XML показало, что каждая запись журнала из этой таблицы присутствовала, несмотря на то, что не упоминалась нигде, кроме инициализации объекта datacontext Linq-to-SQL (таблица не упоминается).
Я еще не проверял, делают ли другие таблицы одно и то же (другие таблицы очень малы, так как этот проект и база данных все еще новы), но таблица журналов выделялась как 80% размера сериализованного файла ,
Это также вызывает беспокойство, так как оно запрашивается и хранится в памяти, что требует дополнительной производительности. Это будет большой проблемой, когда программное обеспечение будет использоваться, и база данных будет расти с большой скоростью.
Любые идеи о том, как предотвратить использование Linq-to-SQL в каждой записи? Благодарю.
Почему DataContext в ViewModel? Если вы его сериализуете, он будет сериализовать каждого публичного участника, включая каждую таблицу. Вы никогда не должны помещать DataContext в ViewModel. –