【问题标题】:Entity Framework 5 Update Procedures with Unmapped Column具有未映射列的实体框架 5 更新过程
【发布时间】:2013-02-04 21:20:19
【问题描述】:

我们的架构设置为通过存储过程完成每个数据库更新、插入和删除。随着每次更新、插入或删除,我们传入一个 ActionId 参数,该参数对于用户会话是唯一的,并存储在日志表中。表定义为:

CREATE TABLE Member(
    MemberId int primary key identity not null,  
    MemberName nvarchar(100) not null)

使用插入存储过程定义:

ALTER procedure [dbo].[proc_MemberInsert]  
(  
    @MemberName nvarchar(100),   
    @ActionId int
)  
AS 
BEGIN
INSERT
INTO
    dbo.[Member] (  
    MemberName)   
values (  
    @MemberName)  

INSERT
INTO
    dbo.[Activity] (  
    TableName,
    ActivityId)   
values (  
    'Member',
    @ActivityId)  
END

我如何使用存储过程对成员实体执行插入操作,并传入一个附加参数,因为此 ActivityId 不是实体或任何表的一部分?

【问题讨论】:

  • 简短回答:不可能。 (插入和编辑)存储过程的签名应与实体属性匹配。也许您可以将ActivityId 添加到您的实体并填写上下文的SavingChanges 事件? (有点像:stackoverflow.com/a/14667122/861716)。

标签: entity-framework entity-framework-5


【解决方案1】:

格特是正确的,这并不容易。 Oracle 确实提供了为整个用户会话记录活动 ID 的能力,并且我们以用户身份连接到 Oracle。所以我们最终将 ActivityId 添加到所有选择过程中,并在选择映射中将 ActivityId 映射到会话(因为在执行任何编辑之前我们总是有一个选择)。在这种情况下,ActivityId 值存在,我们将其添加到日志中,一切正常。

【讨论】:

    猜你喜欢
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 2011-08-28
    • 2011-07-07
    • 1970-01-01
    • 2010-10-09
    相关资源
    最近更新 更多