【茶包射手日記】EF4 StoreGeneratedPattern設定無效
2 |
Entity Framework有個Store Generated Pattern屬性可因應新增資料庫欄位採自動跳號的需求。
今天測試時發現該設定不管用,新增至資料庫時持續傳回Primary Key重複錯誤,顯示設定未生效。爬文發現這是EF4的Bug(原本預期已在VS2010 SP1修復,看來不然),目前知道的解決方法是在Solution Explorer的edml項目按右鍵View Code叫出edmx,直接修改SSDL XML,自己補上StoreGeneratedPattern Attribute(如黃底文字)。
<EntityType Name="MYTABLE">
<Key>
<PropertyRef Name="PKCOL" />
</Key>
<Property Name="USERID" Type="VARCHAR2" Nullable="false"/>
<Property Name="KEYINDATE" Type="DATE" Nullable="false"/>
<Property Name="PKCOL" Type="decimal" Nullable="false"
StoreGeneratedPattern="Identity"/>
但要注意,每次使用GUI設計介面編輯edml儲存後,edmx就會被覆寫,原本手動加上的Attribute將會消失(見下方更新補充說明)。是的! 解決方法是要乖乖手動再把它補回去,至於要不要補聲幹,就看各人的修養囉~~
[2011-07-21更新] 剛才測試,在我的VS2010 10.0.40219.1 SP1Rel版本,配合devart EF,修改edml儲存似乎並未覆寫手動加入的StoreGeneratedPattern Attribute,看來不需要玩改了又改的遊戲。
Comments
# by jain
照理說,改之前還是會先補聲「x」
# by KKBruce
這個Bug有點久了,可能是,可以手動修改後可正常運作,所以就放著不管了。 不過,每次動到edmx就要重新進xml裡設定一次,是比較麻煩的事。