Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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# 基于单个表中的信息从数据库构建tsql insert语句_C#_Sql Server_Database_Visual Studio 2012_Sql Insert - Fatal编程技术网

C# 基于单个表中的信息从数据库构建tsql insert语句

C# 基于单个表中的信息从数据库构建tsql insert语句,c#,sql-server,database,visual-studio-2012,sql-insert,C#,Sql Server,Database,Visual Studio 2012,Sql Insert,假设我有以下数据库/表(Fk表示所述表的外键): 如果我有一个“CustomerId”并直接访问数据库,有没有一种方法可以在不知道我的“CustomerId”所在的表之外的任何其他表的情况下循环访问数据库 我希望以正确的顺序生成sql insert语句,以重新创建整个客户结构,以便对客户具有Fk的任何内容以及客户具有Fk的任何内容也将被重新创建 我很乐意有人给我一个类似“如何”的链接。我之所以希望这样做,是因为我经常在工作中收到一个请求,说“x客户有y问题”,有时如果不将准确的数据输入测试数据库

假设我有以下数据库/表(Fk表示所述表的外键):

如果我有一个“CustomerId”并直接访问数据库,有没有一种方法可以在不知道我的“CustomerId”所在的表之外的任何其他表的情况下循环访问数据库

我希望以正确的顺序生成sql insert语句,以重新创建整个客户结构,以便对客户具有Fk的任何内容以及客户具有Fk的任何内容也将被重新创建

我很乐意有人给我一个类似“如何”的链接。我之所以希望这样做,是因为我经常在工作中收到一个请求,说“x客户有y问题”,有时如果不将准确的数据输入测试数据库,几乎不可能弄清楚,因为您不想在生产中接触数据。因此,如果我能运行一个程序,按照客户在生产中的存在来构建客户,这将使我的生活更加轻松


我确信,使用数据库中的C#和/或存储的存储过程一定可以做到这一点。

您可以使用以下方法获得对引用列的所有表的引用:

SELECT 
     ST.Name                AS  TableName 
    ,SC.name                AS  ColumnName
FROM
    sys.columns  AS SC

    INNER JOIN sys.tables AS ST

    ON SC.Object_ID = ST.Object_Id 

WHERE
    ST.Type = 'U'
AND
    SC.name = 'CustomerId'

我假设如果fk列名与主键名不完全匹配,则此操作将失败?是否仍然存在,使用它来了解事件的顺序?例如,如果表X的值尚未插入,则我可能无法将某些内容插入表Y中。您可以引用sys.constraints表来获取此信息。我正在做一个查询来测试这一点,如果我能完成这个查询,我会发帖的。我希望您能够构建某种查询。即使它不能100%工作,我仍然希望看到它,这样我就可以学习!试着看看这个问题和答案。给你一些好的开始工作的要点。
SELECT 
     ST.Name                AS  TableName 
    ,SC.name                AS  ColumnName
FROM
    sys.columns  AS SC

    INNER JOIN sys.tables AS ST

    ON SC.Object_ID = ST.Object_Id 

WHERE
    ST.Type = 'U'
AND
    SC.name = 'CustomerId'