使用实体框架通过MSSQL数据库删除级联

时间:2012-06-25 19:31:46

标签: c# asp.net sql-server database entity-framework

我想从我的数据库中删除一个条目,但它说它不能,因为另一个表引用了它的id。我要删除的表是:

Packages(packageID(PRIMARY), package_name, etc. . . .)

我想要级联删除的表是

PackageVariant(packageID(FOREIGN), variantID(FOREIGN)) //those foreign keys combine to make PRIMARY composite key

从PackageVariant删除条目时,我想级联删除相关的变体:

Variant(variantID(PRIMARY), variant_name, etc . . .)

就我想要的级联来说那就好了。

现在我有一个实体框架模型设置并且工作正常,我有数据库设置并且正常工作。那么我该如何改变这两者或其中之一以便这种级联删除有效呢?

我还有一个PackageVariantProduct数据库图表。

由于

1 个答案:

答案 0 :(得分:1)

级联删除是在数据库中的引用约束处理的,因此您只需要将On Delete规则设置为Cascade。问题是级联只能从主体到依赖实体发生。因此,如果您希望从PackageVariant删除(甚至是级联删除)将删除PackagesVariants,则无法删除。如果确实需要,您将不得不使用数据库触发器。