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裡設定一次,是比較麻煩的事。

Post a comment