我目前使用MVC3應用程序內的實體框架來連接到Oracle數據庫。我想在Oracle數據庫的一個表中寫一條新記錄,其中包含一個定義它的主鍵的序列。當然,主鍵被定義爲非空。我所有的觀點都是用ASP.Net而不是Razor編寫的。Oracle序列,實體框架,並在MVC3視圖中獲取nextval
我看到大多數帖子都建議直接在edmx模型上設置StoreGeneratedPattern。然而,我注意到這樣一個最EDMX模型的例子:Oracle entity in VS entity framework doesnt update the primary key in code包括使用EntityTypes問題-the表中定義的表我想這樣做在一個EntitySet的實際上是涵蓋:
<EntitySet Name="REGISTERED_PERSON" EntityType="Model.Store.REGISTERED_PERSON" store:Type="Tables" Schema="MYSCHEMA" />
,當我嘗試在此設置StoreGeneratedPattern = Identity,我得到的錯誤是StoreGeneratedPattern屬性不被允許,大概是因爲它不是EntityType。我原本以爲只是獲得最大值。通過LINQ語句從數據庫中註冊registered_person_id,然後將其分配到模型中,但是如果同時執行兩個插入,則會出現重複ID的問題。
我也檢查了數據庫,我沒有寫任何觸發器。我知道,在Oracle中,你可以選擇從雙重選擇要獲取的是由序列生成,比如下圖所示的下一個值:
選擇MY_SEQ.nextval,從雙
這個帖子在這裏「一些價值」: postgresql nextval question on sequences有一個很好的標題,但問題是我沒有使用postgresql或PHP,所以不幸的是它並沒有幫助我。插入記錄時,我也沒有寫入任何觸發器來觸發序列。
如何從序列中獲取下一個值並將其分配給我的Registered_Person_Id,最好是在整個模型對象傳回控制器以插入數據庫之前的視圖中?