在c#代码中使用T-SQL自定义函数
本文关键字:T-SQL 自定义函数 代码 | 更新日期: 2023-09-27 18:10:34
我必须在我的数据库中定义一个自定义函数来计算实体的"有效性结束日期"。这个函数将在存储过程中使用,但我需要在web应用程序中使用相同的逻辑。
我使用Linq-to-sql连接到我的DB和映射表到类。所以我想知道是否有一种方法可以重用在我的DB中定义的函数。我想通过分部类扩展我的实体。我必须在我的代码中重写逻辑吗?
注意我需要在我的c#代码中使用函数而不是存储过程。
我发现可以通过Linq-to-Sql调用SQL Server DB中定义的函数。
我刚刚在dbml
上下文文件中导入了函数对象。所以我可以这样调用它:
context.fn_my_db_function(param1, param2, etc);
简单!
我必须重写代码中的逻辑吗?
如果你想让数据库执行它(psuedo):
public static YourReturnType Calculate(this TEntity foo)
{
return database.ExecuteFunction("calculate", foo);
}
您可以创建一个存储过程,然后在DBML设计器中将其拖到Methods窗格中,这将尝试自动检测返回类型和输入,并通过上下文实例公开它们。如果需要的话,您可以使用Visual Studio中的Properties视图将返回类型映射到表模型,或者自定义的模型,或者其他东西。
就像c#中的函数一样,例如:
using (var context = new MyDataContext()) {
var result = context.MyStoredProcedure(input);
}
其中result
为映射的托管类型,input
为必需的参数参数
这在实体框架中是可能的。参考链接。
你可以直接映射你的存储过程并创建一个访问获取方法。
但是如果你只是想在数据库中执行你创建的过程。