У меня есть данные продукта DAL to CRUD.
Например:
Order someOrder = new Order();
someOrder.Description = "Test";
someOrder.Save();
someOrder.Remove();
Мне нужно спроектировать DAL, чтобы только пользователи, у которых есть блокировка объекта типа Order, могли выполнять операции CRUD.
Моя идея - передать сессию методам CRUD. После прохождения сеанса метод проверит, имеет ли этот пользователь блокировку для этого конкретного объекта, и, если да, он продолжит выполнение этого метода.
Например:
someOrder.Save(sessionThatContainsLockInformation);
// Pseudo-code
public void Save(Session session)
{
1. Get user GUID from the session.
2. Get lock details from the session.
3. Check that the provided user has a lock.
4. On success, proceed with saving the order.
}
Меня беспокоит тот факт, что я использую сеансы на уровне доступа к данным. Моя интуиция подсказывает мне, что я не должен этого делать. Моя цель - написать как можно меньше кода для повторного использования кода, но, похоже, я застрял с теми же идеями.
Может кто-нибудь сообщить мне, является ли это разумным подходом, или он имеет некоторые фундаментальные недостатки или накладные расходы на обслуживание?
Любые альтернативные решения приветствуются. Мне не интересен код, просто некоторые идеи, пожалуйста.
Спасибо