C# 关于使用C中SQL数据库的自定义函数的结构/概念建议#

C# 关于使用C中SQL数据库的自定义函数的结构/概念建议#,c#,sql-server-express,trading,C#,Sql Server Express,Trading,我想知道在我开始一个新项目时,是否有经验丰富的C#/SQL开发人员能给我一个正确的方向。我来自MS Access/VBA世界,我正试图用C#,SQL server express back=end开发一个市场数据系统。我的主要问题是使用自定义函数的最佳方式是什么?在access/vba中,编写UDF很简单,然后尽可能深地嵌套它们以继续创建新函数。那么在C#/SQL中,我应该在C#中有一个静态函数类吗?还是将@parameters传递给SQL?从我的应用程序中使用数据库对我来说似乎不那么简单。像往

我想知道在我开始一个新项目时,是否有经验丰富的C#/SQL开发人员能给我一个正确的方向。我来自MS Access/VBA世界,我正试图用C#,SQL server express back=end开发一个市场数据系统。我的主要问题是使用自定义函数的最佳方式是什么?在access/vba中,编写UDF很简单,然后尽可能深地嵌套它们以继续创建新函数。那么在C#/SQL中,我应该在C#中有一个静态函数类吗?还是将@parameters传递给SQL?从我的应用程序中使用数据库对我来说似乎不那么简单。像往常一样,提前感谢…

作为开始,您可能会遵循一种非常常见的模式,即:

您可以在sql server数据库中创建sql函数。请记住,它们不会对应用程序做任何事情——它们只是对数据做一些事情(如转换、数学等)

您可以使用接受参数的数据库存储过程从应用程序访问数据库。存储过程就是您将使用的,例如,将数据集返回到应用程序或任何其他DML

最后,您可以在应用程序层中使用非数据函数/子函数。例如:您可能有一个发送电子邮件功能、调用数据库存储过程的获取数据功能等

查找关键字以了解有关它们是什么/如何使用它们的更多信息

stored procedure
udf, user defined function
tsql
sql-server

将存储过程添加到数据库表后,只需在C#中调用它,如下所示:

using System.Data.SqlClient;

private void DoSomething(string storedProcedure, string tableName)
{
 using (var conn = new SqlConnection(ConnectionString))
 {
  conn.Open();
  var cmd = new SqlCommand(storedProcedure, conn) { CommandType = CommandType.StoredProcedure };
  cmd.Parameters.Add(new SqlParameter("@tablename", SqlDbType.NVarChar, 80));
  cmd.Parameters["@tablename"].Value = tableName;
  cmd.ExecuteNonQuery();
 }
}

非常感谢。因此,大部分数据处理(子查询、自定义聚合函数等)建议我使用SQL创建函数,并通过C#中的存储过程使用它们。我仍在试图描绘一些更复杂的函数逻辑被T-SQL调用的场景。我觉得SQL server中的“层”与我无关。我敢肯定这是一件无聊的事。谢谢你!很好的例子,谢谢。我看到了。另外,从昨晚开始,我读到如果我可以在后端使用存储过程进行大量处理,通常比使用C#(和ADO)进行处理要快。