У меня есть обобщенный метод c, который удаляет многие объекты с помощью SQL и помечает объекты как отдельные (EF). В настоящее время я передаю список объектов и функцию для извлечения первичного ключа объекта, который должен быть включен в SqlParameters. Когда я пытался извлечь свойства (PK) из каждого объекта с отражением, а не передавать в функцию, это оказало влияние на производительность для большого числа объектов.
Можно ли использовать отражение на первом объекте для создать эту функцию, а затем использовать эту функцию для извлечения всех свойств (PK) из элемента в списке без отражения?
Это пример того, как функция вызывается в данный момент.
Db.DeleteMany(someObjects, obj => obj.PrimaryKey);
(я пытаюсь создать второй параметр, используя отражение, без результирующей функции, также использующей отражение для извлечения значения)
Хотя я не могу поделиться фактической реализацией (я написал ее, но мне не принадлежит это) вот подпись метода deleteMany.
public static void DeleteMany<T1, T2>(this DbContext context, List<T1> items, Func<T1, T2> getKey) where T1 : class
Вся остальная информация, такая как tableName и tablePkName, выбирается с использованием отражения в DbContext на основе типа T1. T2 - это тип PK в самом объекте.