我試圖理解和EF信任。 我有表的數據庫,我試圖複製與EF
Code-First
技術大部分結構作爲練習練習自己的基礎知識。多DataAnnotation ForeignKeys循環或多個級聯路徑異常
我所有的課都「HB」作爲其名稱的前綴。 我想寫屬性名稱上沒有'Hb'的其他類的對象引用。
我的這個site
後續指令第一批實施的事業例外,如:
引進國外KEY約束 'FK_Common.HbZipcode_Common.HbCountry_CountryId' 表 'HbZipcode' 可能導致週期或多個級聯路徑。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY 約束。無法創建約束或索引。請參閱前面的 錯誤。
[Required, ForeignKey("Country")]
public int CountryId { get; set; }
public virtual HbCountry Country { get; set; }
[Required, ForeignKey("State")]
public int StateId { get; set; }
public virtual HbState State { get; set; }
[Required, ForeignKey("City")]
public int CityId { get; set; }
public virtual HbCity City { get; set; }
// This Foreignkey never throw exception
[ForeignKey("Neighborhood")]
public int? NeighborhoodId { get; set; }
public virtual HbNeighborhood Neighborhood { get; set; }
我做錯了,我看不到。
如果任何人都可以幫助我,那會很好。
編輯:
應用由通過plushpuffin解決方案後,一切都如預期。
下面的代碼:
var modelConfig = dbModelBuilder.Entity<HbZipcode>();
modelConfig
.HasRequired(zc => zc.Country)
.WithMany(c => c.Zipcodes)
.HasForeignKey(zc => zc.CountryId)
.WillCascadeOnDelete(false);
modelConfig
.HasRequired(zc => zc.State)
.WithMany(s => s.Zipcodes)
.HasForeignKey(zc => zc.StateId)
.WillCascadeOnDelete(false);
modelConfig
.HasOptional(zc => zc.Neighborhood)
.WithMany(n => n.Zipcodes)
.HasForeignKey(zc => zc.NeighborhoodId)
.WillCascadeOnDelete(false);
Delete cascade
上HbZipcode
時HbCity
被刪除
我說錯刪除的方向。這是HbNeighborhood(等)被刪除,將級聯刪除HbZipCode。對於那個很抱歉。 – plushpuffin
所以我想象它是建議刪除所有「CASCADE」約束和明確的更新和刪除對象現在......對嗎? –
您可能希望在最直接的路徑上保留一組具有級聯刪除的觸發器。這一切都取決於你的需求。 – plushpuffin