Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检测SQL Server 2008中是否正在使用实体?_C#_Asp.net_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

C# 如何检测SQL Server 2008中是否正在使用实体?

C# 如何检测SQL Server 2008中是否正在使用实体?,c#,asp.net,sql-server,sql-server-2008,tsql,C#,Asp.net,Sql Server,Sql Server 2008,Tsql,我想知道有没有办法知道一个记录是否与其他记录一起使用 除了捕获引用完整性异常之外,还有其他方法可以找到它吗 我通常会捕获此异常,并告诉用户“否”删除或无法删除记录。您可以对相关表运行查询。创建一个存储过程,使用系统表中的FKs为每个表构建自定义视图。在每个视图中,查询所有相关表。每次添加或删除FK时都运行SP,以便它适当地更新所有视图 问题已解决。您在CRUD操作中使用的是哪种技术/框架?您的应用程序对系统表具有什么类型的访问权限?@MichaelPerrenoud:Linq2Sql@DaveM

我想知道有没有办法知道一个记录是否与其他记录一起使用

除了捕获引用完整性异常之外,还有其他方法可以找到它吗


我通常会捕获此异常,并告诉用户“否”删除或无法删除记录。

您可以对相关表运行查询。

创建一个存储过程,使用系统表中的FKs为每个表构建自定义视图。在每个视图中,查询所有相关表。每次添加或删除FK时都运行SP,以便它适当地更新所有视图


问题已解决。

您在CRUD操作中使用的是哪种技术/框架?您的应用程序对系统表具有什么类型的访问权限?@MichaelPerrenoud:Linq2Sql@DaveMarkle-问题与并发性无关。如果我的记录已分散到10-15个表中,该怎么办。我不想把它写在每一张桌子上。我需要一些通用的方法来识别您是否可以添加一个新列,如果该记录是从其他表引用的,则该列将存储预先计算的值。您可以在更新引用时更新此列的值,这样就不必在每次读取时都运行繁重的查询。您的意思是说添加一个类似IsInUse的列来跟踪其使用情况。但问题再次出现在它的回溯上。在这种情况下,每次删除引用表中的记录时,我都必须回溯删除记录中的每一条记录,这又是一种过度使用。这不是过度使用,而是您的要求。您想知道该记录是否在不依赖异常的情况下从其他表引用。我给你的答案是:查询其他表。如果您不想为多次查询付出代价,那么可以将结果缓存在单独的列中。您可以将其存储为一个数字,并在添加关系时递增,在删除关系时递减。如果值为0,则您知道记录不存在任何关系。存储外键和约束的系统表如何。我不知道可用于访问数据的表名或SP。但是SQL DBA会知道的