1
是否有可能得到級聯對這個對象模型刪除?實體框架4.3和級聯刪除
public class Entity
{
[Key, Column("Id"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
}
public class Comment : Entity
{
public string Text { get; set; }
}
public class Owner : Entity
{
public Owner()
{
Pets = new List<Pet>();
Comments = new List<Comment>();
}
public string Name { get; set; }
public virtual ICollection<Pet> Pets { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
public class Pet : Entity
{
public Pet()
{
Comments = new List<Comment>();
}
public virtual Owner Owner { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
public string Name { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Pet>()
.HasOptional(d => d.Owner)
.WithMany(d => d.Pets)
.WillCascadeOnDelete(true);
}
這種模式將產生將級聯刪除寵物當業主被刪除的數據庫。但它不會級聯刪除評論,它只會從註釋表中刪除FK。如果我嘗試相應地修改約束。
ALTER TABLE [dbo].[Comments] WITH CHECK ADD CONSTRAINT [FK_Comments_Pets_Pet_Id] FOREIGN KEY([Pet_Id])
REFERENCES [dbo].[Pets] ([Id])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Comments] CHECK CONSTRAINT [FK_Comments_Pets_Pet_Id]
GO
ALTER TABLE [dbo].[Comments] WITH CHECK ADD CONSTRAINT [FK_Comments_Owners_Owner_Id] FOREIGN KEY([Owner_Id])
REFERENCES [dbo].[Owners] ([Id])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Comments] CHECK CONSTRAINT [FK_Comments_Owners_Owner_Id]
GO
出現以下sql錯誤。
Introducing FOREIGN KEY constraint 'FK_Comments_Pets_Pet_Id' on table 'Comments' may cause cycles or multiple cascade paths
這使我得出的結論是,創建的模型不支持級聯刪除,我被迫單獨刪除評論。或者我在這裏錯過了什麼?
正如我懷疑:-) – 2012-03-12 11:08:51