实体框架4.1了解删除期间违反了哪个外键约束

时间:2012-01-19 11:19:07

标签: entity-framework foreign-keys

我已经开始首先使用Entity Framework 4.1和Code。我非常喜欢以前的ado.net技术。

我有一个非常简单的情况,其中有一个department表和一个employee表在数据库中。每个员工都属于一个部门,一个部门有很多员工。业务规则是:删除部门时,如果有任何关联员工,则不允许删除。我可以在删除之前编写一个小方法并检查依赖性。但是,由于我的项目是一个非常复杂的项目,有超过300个db表,我讨厌这样做。关系经常变化,导致项目的所有删除方法发生很多变化。

在ado.net中,在类似情况下,我曾经解析抛出的异常并获取违反的特定外键约束的名称。根据违反的FK约束的名称,我曾经给客户端提供了适当的错误消息。即使在一个超过150个表的相当大的项目中,这项技术也能很好地运作。

我如何在EF中做类似的事情?当调用SaveChanges()时,如何获取违反哪个FK?

1 个答案:

答案 0 :(得分:0)

您需要获取最内部异常的Message(通常是SqlException)。然后,您可以从该字符串中提取FK名称并检查违反了哪个FK。