2012-07-26 43 views
0

我正在定義POCO,與實體框架4.0的Code First功能一起使用。是否有可能定義POCO以這樣的方式,當我設置標識列的值,將使用它,當我不這樣做,它會自動增加?

我的數據部分來自外部源,併爲數據我需要保持標識列值等同於外部源的,我有時需要設置ID自己。但對於相同的實體,我有時沒有Id,並希望自動增加行爲。

是否有可能定義POCO以這樣的方式,當我設置的值,將使用它,當我不這樣做,它會自動增加? 根據this mySQL forum answer mySQL應該很好地處理這種情況,但似乎與實體Framwork不...

回答

0

從拉里的回答繼,我建議寫一個存儲過程,它集IDENTITY_INSERT上,插入記錄,然後關閉之後。

那麼我導入作爲函數導入,然後使用該內部也許在實體類型本身的擴展方法,或只是作爲對象上下文的功能。

這樣你可以一個標準:

var user = new User("John"); 
entities.Add(user); 
entities.SaveChanges(); 

類型的事情,當你要使用的自動遞增號,然後使用類似:

entities.CreateUser("John"); // This would be the SP 

你可以有條件地使用這種方式一種方法或其他。這不是自動的,但可以讓你使用。

0

我認爲你要找的是身份插入。

檢查此鏈接了:Using IDENTITY_INSERT with EF4

至於定義POCO以這樣一種方式,它會自動地知道你的意圖是什麼 - 我不認爲這是可能的。在插入時你必須明確地設置它。

我會做的運行對與EF,在這裏你可以設置標識插入= ON的表格中的原始SQL,然後將在那裏一些線,然後將其設置回掉。

記住要考慮到你的自動遞增ID可能最終結束了,你已經在你的手動插入使用,這將在本質上破壞你的程序具有相同的值。

最好的問候,拉里

相關問題