Entity Framework 的 Master – Detail FK 的設定問題

摘要:Entity Framework 的 Master – Detail FK 的設定問題

原本資料庫設計是

DB Schema 分別是  Master – DetailA – DetailB 的架構

其 Detail A 裡有記錄 Master 的 id ,Detail B 有記錄 Detail B 的 id

因為這是一定要有的值,所以我索性加上了 Not null

edmx 那裡重新整理後,再重新編譯!就會出現以下的錯誤

image

錯誤    1    錯誤 3023: 對應片段中從第 1153, 1267, 1294, 1321, 1339, 1357, 1374 行開始有問題: 資料行 WorkDetail.WorkID 沒有預設值而且不可為 Null。必須有資料行值才能儲存實體資料。
有下列狀況時將不會反覆存取索引鍵為 (PK) 的實體:
  ((PK 是在 'WorkDetail' EntitySet 中

OR PK 在 AssociationSet 'WorkDetail_FK_PriceCustomID' 中扮演 Role 'WorkDetail'

OR PK 在 AssociationSet 'WorkDetail_FK_PricePaperID' 中扮演 Role 'WorkDetail'

OR PK 在 AssociationSet 'WordDetail_FK_PricePrintID' 中扮演 Role 'WorkDetail'

OR PK 在 AssociationSet 'WorkDetail_FK_SpecTypeID' 中扮演 Role 'WorkDetail'

OR PK 在 AssociationSet 'WorkDetail_FK_WorkID' 中扮演 Role 'WorkDetail'

OR PK 在 AssociationSet 'WorkDetail_FK_PriceBindID' 中扮演 Role 'WorkDetail')

AND (PK 不在 'WorkDetail' EntitySet 中

OR PK 在 AssociationSet 'WorkDetail_FK_WorkID' 中不是扮演 Role 'WorkDetail'))

-----------------------------------------

本來要先查到真正的問題再 po 上來的!但電腦一直有問題打算重裝,所以先等查完問題後再把結果 po 上來

目前的做法是先把事後加上的 not null 拿掉,雖然這不是好的作法,但也只好先忍著點好了。