Мы начали использовать Entity Framework 4 для доступа к данным и столкнулись с проблемой или, возможно, отсутствием понимания.
Наша текущая система в значительной степени зависит от хранимых процедур, эти процедуры содержат некоторую необходимую бизнес-логику, поэтому мы должны продолжать использовать их при выполнении операций выбора / вставки / обновления / удаления.
У нас возникает следующая проблема:
Мы сопоставили таблицу с сущностью, скажем, например, это сущность пользователя и имеет следующие свойства - UserId, FirstName, LastName
Теперь в нашем sproc для вставки пользователя мы принимаем FirstName, LastName, CreatedById в качестве параметров.
Так как наш пользовательский объект не имеет CreatedById, мы получаем ошибку, указывающую, что никакое свойство нашего объекта не может быть сопоставлено с параметром "CreatedById".
Теперь мы попробовали добавить скалярное свойство CreatedById в нашу сущность вручную, но это приводит к тому, что в нашей таблице User нет поля в источнике данных, сопоставленном с CreatedById. В общем случае дополнительное свойство, которое мы хотели бы передать, не является чем-то, что сохраняется.
Теперь существует потенциальное решение этой проблемы, заключающееся в том, что мы можем просто сопоставить процедуры с импортом функций и не беспокоиться об использовании .AddObject, .DeleteObject, .SaveChanges способом управления нашими объектами, но это не похоже на пойти на это.