我试图理解和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