2013-02-04 168 views
0

我們的體系結構已設置,以便通過存儲過程完成每個數據庫更新,插入和刪除操作。隨着每次更新,插入或刪除,我們傳入一個ActionId參數,該參數對用戶會話是唯一的,並存儲在日誌表中。表定義爲:實體框架5使用未映射列的更新過程

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不是實體或任何表的一部分?

+0

簡答:不可能。 (插入和編輯)sprocs的簽名應與實體屬性匹配。也許你可以爲你的實體添加一個ActivityId並且填充上下文的'SavingChanges'事件? (有點像這樣:http://stackoverflow.com/a/14667122/861716)。 –

回答

0

格特是正確的,這是不容易的。 Oracle確實提供了爲整個用戶會話記錄活動標識的功能,並且我們以用戶身份連接到Oracle。因此,我們最終將ActivityId添加到所有選擇過程,並將ActivityId映射到會話中(因爲我們在執行任何編輯之前總是有一個選擇)。在這種情況下,ActivityId值存在,我們將它添加到日誌中,並且一切正常。