Во-первых: отличный вопрос, и о времени кто-то спросил это!:-)
Да, тот факт, что ORM обычно возвращает все столбцы таблицы базы данных, - это то, что вы должны учитывать при проектировании своих систем.Но, как вы упомянули - есть способы обойти это.
Главный факт для меня - это осознавать , что это то, что происходит - или SELECT * FROM dbo.YourTable
, или (лучше)a SELECT (list of all columns) FROM dbo.YourTable
.
Это не проблема, если вам действительно нужен весь объект и все его свойства, и если вы загружаете несколько строк, это тоже хорошо - удобство превосходит необработанную производительность.
Возможно, вам придется немного подумать об изменении структуры вашей базы данных, например:
, возможно, поместить большие столбцы, такие как BLOB, в отдельные таблицы со ссылкой 1: 1.в вашу базовую таблицу - таким образом, выборка в родительских таблицах не захватывает все эти большие объекты данных
, возможно, помещает необязательные группы столбцов, которые могут отображаться тольков определенных ситуациях, в отдельные таблицы и связывать их - опять же, просто для того, чтобы базовые таблицы были простыми
Кроме того: избегайте попыток "заставить" ваш ORM "работать".массовые операции - это просто неИх сильная сторона.
И: следите за производительностью и попробуйте выбрать ORM, который позволяет вам изменять определенные операции, например, на хранимые процедуры - Entity Framework 4 позволяет это.Так что, если удаления убивают вас - возможно, вы просто пишете Delete
сохраненный процесс для этой таблицы и обрабатываете эту операцию по-другому.