Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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 CLR硬编码SQL语句_C#_Sql Server_Sqlclr - Fatal编程技术网

C# SQL Server CLR硬编码SQL语句

C# SQL Server CLR硬编码SQL语句,c#,sql-server,sqlclr,C#,Sql Server,Sqlclr,我正在将现有的T-SQL存储过程转换为CLR C#.NET。我已经深知在.NET应用程序源代码中硬编码SQL语句是有害的。CLR存储过程是否是此规则的例外?我还有别的选择吗?我不能很好地调用t-SQL存储过程来代替 我不能很好地调用t-SQL存储过程来代替 我不确定在CLR组件中需要保存什么逻辑,但是您当然可以从CLR组件调用存储过程来检索要处理的数据。您也可以在处理数据后调用存储过程来更新数据 在.NET中对SQL语句进行硬编码,这一点已经深入到我的头脑中 应用程序源代码是邪恶的。CLR存储过

我正在将现有的T-SQL存储过程转换为CLR C#.NET。我已经深知在.NET应用程序源代码中硬编码SQL语句是有害的。CLR存储过程是否是此规则的例外?我还有别的选择吗?我不能很好地调用t-SQL存储过程来代替

我不能很好地调用t-SQL存储过程来代替

我不确定在CLR组件中需要保存什么逻辑,但是您当然可以从CLR组件调用存储过程来检索要处理的数据。您也可以在处理数据后调用存储过程来更新数据

在.NET中对SQL语句进行硬编码,这一点已经深入到我的头脑中 应用程序源代码是邪恶的。CLR存储过程是邪恶的吗 这条规则的例外


有很多理由不将硬编码SQL语句放入编译代码中,而是使用存储过程。我们可以很容易地列出并讨论其背后的原因,但我建议,如果您目前有此规则,那么,是的,它也适用于CLR。如果没有其他原因,只是为了保持一致。

您当然可以调用T-SQL从CLR过程中删除过程。虽然这个问题可能被解释为基于意见,但我认为它应该保持开放,因为我真的希望看到人们如何回答这个问题。将Sql硬编码到C#并不一定是邪恶的,但它可能导致滥用和注入缺乏经验的开发人员。我建议关闭这个问题,因为它更合适对于一些“高度理论化”的论坛。如果你想保持它的开放性,那么请专业地重新命名它,而不是像这样讨论(引用):“…在.NET应用程序源代码中硬编码SQL语句是邪恶的”。制定具体问题(而不是抽象的“邪恶”)并提供示例以突出这些问题。感谢您的理解。敬请注意,您有什么原因不能直接调用存储过程吗?为什么要尝试将数据库逻辑移出数据库?同意。但需要注意的是,许多数据库都有一条规则,即所有数据访问都必须使用存储过程(例如出于安全原因),因此无法使用硬编码SQL。但是,当您已经在存储过程(即CLR过程)中运行时,行确实会变得模糊。