2012-10-02 41 views
2

我是一個noob w Linq對實體。這些是我的數據庫表。Linq-to-Entity獲得主鍵返回插入到Oracle

create table Jobs 
(ID   NUMBER PRIMARY KEY, 
    .... 
) 

create table Responsibilities 
(ID   NUMBER PRIMARY KEY, 
    JobID   NUMBER 
    .... 
) 

JobID列是引用作業(ID)的外鍵。

使用這些表,在Visual Studio中,我自動創建允許我連接到這些表的類。然後我嘗試創建作業並將它們插入到數據庫中。我在每個表上都有觸發器爲主鍵的每個表生成一個唯一的ID。以下是創建Job的代碼片段。

using (Workflow.WorkflowEntities entity = new Workflow.WorkflowEntities(connectionString)) 
{ 
    JOBS j = new JOBS(); 
    entity.AddToJOBS(j); 
    entity.SaveChanges(); 

我遇到的一個問題是,當作業被保存時,我沒有得到一個主鍵。當我想創建Responsibilities對象並將它們添加到Job中,然後一併保存所有內容時,這尤其是個問題。它像它不會在Responsibilities對象中正確填充JobID字段。

這樣做的正確方法是什麼?任何指針是極大的讚賞,

MJ

+0

可能的重複:[在Entity Framework中,插入後獲取標識列的值。](http://stackoverflow.com/questions/6306743) –

回答

1

您需要的屬性來設置StoreGeneratedPattern =「身份」爲列

+0

我做了這個改變。我更新了該屬性爲「身份」,但它仍然無效。我沒有看到Linq在插入上生成一個唯一的鍵。它總是希望使用0,大概是因爲當我創建我的作業對象時,ID是0.我還注意到有一個方法JOBS.CreateJOBS,它將一個ID作爲輸入參數。儘管如此,它的工作方式不同。 –

+1

@mj_你仍然需要在oracle端使用觸發器,linq並沒有創建你告訴linq的db值 – Gratzy