Я пытаюсь создать новое приложение поверх существующей БД.
Учетные данные пользователя извлекаются через отдельную систему и возвращают 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