Наша политика разработки требует, чтобы все обращения к базе данных осуществлялись с помощью хранимых процедур, и это создает проблему при использовании LINQ.
Сценарий, обсуждаемый ниже, несколько упрощен для упрощения объяснения.
Рассмотрим базу данных с двумя таблицами.
- Заказы (OrderID (PK), InvoiceAddressID (FK), DeliveryAddressID (FK))
- Адреса (AddIDID (PK), Street, ZipCode)
Набор результатов, возвращаемый хранимой процедурой, должен переименовать столбцы, связанные с адресом, чтобы адреса счета и доставки отличались друг от друга.
OrderID InvAddrID DelAddrID InvStreet DelStreet InvZipCode DelZipCode
1 27 46 Main St Back St abc123 xyz789
Это, однако, означает, что LINQ не знает, что делать с этими столбцами в наборе результатов, поскольку они больше не соответствуют именам свойств в объекте Address.
Огорчает то, что в этом нет никакого способа определить, какие столбцы результирующего набора соответствуют каким свойствам сущности, даже если можно (в определенной степени) сопоставить свойства сущности с параметрами хранимой процедуры для вставки / операции обновления.
У кого-нибудь еще была такая же проблема?
Я полагаю, что это будет относительно распространенный сценарий, с точки зрения схемы, но хранимая процедура, по-видимому, является ключевым фактором здесь.