繁体   English   中英

复杂的插入式存储过程不适合EF?

[英]Complex Insert Stored Proc unsuitable for EF?

我正在尝试在现有数据库之上构建新的应用程序。
通过单独的系统检索用户凭证,并将GUID返回给标识用户的客户端应用程序,但是此数据库使用bigInt进行用户标识,以解决数据库中的每个SP使用映射功能来发现本地UserIdentity基于传递给SP的GUID(userID)。
我想使用EF(.Net4.0),但看不到将GUID传递到SP中以允许DB映射功能确定本地UserIdentity的方法。
映射SP以返回集可以正常工作,可以使用GUID,导出本地UserIdentity并返回记录“脉冲”。 更新和删除是可以的,因为它们可以使用实体自己的ID值。

我猜我真正的问题是“如果SP映射到的实体不包含具有该值的属性,是否可以将值发送到存储过程?”

这是一个典型的表(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

这并不是“不适合EF”,但是如果您将proc用于一个操作(INSERT / UPDATE / DELETE / SELECT),则EF希望您将proc用于另一个操作。

在这里使用INSTEAD OF触发器会更容易吗? 然后,EF完全不需要了解它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM