Комплексная вставка хранимого Proc не подходит для EF? - PullRequest
0 голосов
/ 22 сентября 2011

Я пытаюсь создать новое приложение поверх существующей БД.
Учетные данные пользователя извлекаются через отдельную систему и возвращают GUID клиентскому приложению, идентифицирующему пользователя, однако в этой базе данных используется bigIntдля идентификации пользователя - чтобы обойти проблему, заключающуюся в том, что каждый SP в DB использует функцию Mapping для обнаружения локального UserIdentity на основе GUID (userID), переданного в SP.
Я хотел бы использовать EF (.Net4.0), но я не вижу способа передать GUID в SP, чтобы позволить функции отображения DB для определения локального UserIdentity.
Отображение SP для возврата наборов работает нормально, принимая GUID, получаялокальный идентификатор пользователя и возвращение набора записей «импульса».Обновления и удаления хороши, потому что они могут использовать собственное значение Id сущности.

Я думаю, мой реальный вопрос: «Есть ли способ отправить значение в хранимую процедуру, если сущность, к которой привязан SP, не 't содержит свойство с этим значением? "

Вот типичная таблица (объект EF имеет те же свойства) и соответствующий ей SP вставки.

CREATE TABLE [dbo].[Pulse](
    [Id] [bigint] IDENTITY(1,1) NOT NULL,
    [UserIdentity] [bigint] NOT NULL,
    [Recorded] [datetime] NOT NULL,
    [Value] [int] NOT NULL,

SP вставки выглядит следующим образом

    ALTER PROCEDURE [dbo].[Pulse_Insert] @userId uniqueIdentifier, @recorded datetime, @pulse int AS
BEGIN
SET NOCOUNT ON;
        declare @userIdentity bigint
        select @userIdentity = dbo.GUIDUserMapping(@userId)
        insert into dbo.Pulse (UserIdentity, recorded, value)
        values(@userIdentity,@recorded,@pulse)
        END

1 Ответ

0 голосов
/ 22 сентября 2011

Это не «не подходит для EF», но если вы используете процедуру для одной операции (INSERT / UPDATE / DELETE / SELECT), «EF ожидает, что вы будете использовать процедуры для другой операции.

Не проще ли здесь использовать триггер INSTEAD OF? Тогда EF вообще не нужно будет об этом знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...