Для мене Критерії - це досить легко зрозуміти і робити динамічні запити. Але недолік, про який я зараз кажу, полягає в тому, що він завантажує всі відносини багато-один і т.д., тому що у нас є лише три типи FetchModes, тобто Select, Proxy і Default, і в усіх цих випадках він завантажує багато-одного (можливо, я помиляюся, якщо так допомогти мене виходять :))
Друга проблема з критеріями полягає в тому, що він завантажує повний об'єкт, тобто, якщо я хочу просто завантажити EmpName працівника, він не зможе придумати це, придумав, що він створив повний об'єкт Employee, і я можу отримати EmpName від нього, завдяки цьому він справді погано працює в звітність . де HQL просто завантажує (не завантажував асоціації / відносини), те, що ви хочете, так збільшуйте продуктивність у багато разів.
Однією з особливостей критеріїв є те, що він захистить u від SQL Injection через його динамічну генерацію запитів, де, як і в HQL, ур-запити є фіксованими або параметризованими, тому вони не є безпечними від ін'єкції SQL.
Крім того, якщо ви пишете HQL у файли ur aspx.cs, то ви щільно поєднані з ур DAL.
В цілому мій висновок полягає в тому, що є місця, де ти не можеш жити без таких звітів, як HQL, тому використовувати їх ще Критерії простіше в управлінні.