C# EF框架调用数据库的函数
1.在数据库中创建一个自定义函数:
REATE FUNCTION [dbo].[f_IsOriginsDisabled] ( @origins varchar(50), @needPPTV bit ) RETURNS bit AS BEGIN if @origins='' begin RETURN 1; end declare @disables varchar(50); set @disables=''; if @needPPTV=0 begin set @disables = @disables + ',6'; end select @disables = @disables + ',' + CAST(Id AS varchar(50)) + ',' from Video_Origin where IsDel=0 and IsEnabled=0 DECLARE @ix int, @pos int, @str varchar(1000); SET @pos = 1; SET @ix = 1; WHILE @ix > 0 BEGIN SET @ix = charindex(',', @origins, @pos) IF @ix > 0 SET @str = substring(@origins, @pos, @ix - @pos); ELSE SET @str = substring(@origins, @pos, len(@origins)); SET @str = ltrim(rtrim(@str)); if charindex(','+@str+',',@disables)<=0 return 0; SET @pos = @ix + 1; END RETURN 1; END GO
2.创建EF的数据库上下文:
引用 EntityFramework.Functions程序集
public class MediaDBContext : DbContext, IDisposable { public MediaDBContext() : base("MediaDBContext") { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Conventions.Add(new FunctionConvention<MediaDBContext>()); } /// <summary> /// 判断当前源是否全部失效 /// </summary> /// <param name="origins">视频源</param> /// <param name="needPPTV">是否需要PPTV源</param> /// <returns></returns> [Function(FunctionType.ComposableScalarValuedFunction, "f_IsOriginsDisabled", Schema = "dbo")] [return: Parameter(DbType = "bit")] public bool IsOriginsDisabled([Parameter(DbType = "varchar")]string origins, [Parameter(DbType = "bit")]bool needPPTV) { return Function.CallNotSupported<bool>(); } }
3.调用方式:
1 | var query = context.Movies .Where(m => !context.IsOriginsDisabled(m.Origins, hasPPTV); |
上面步骤已经使用EF调用数据库的函数了。
4.详细介绍EF怎样调用数据库中的存储过程与函数文档说明:
https://weblogs.asp.net/dixin/entityframework.functions
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2015-04-08 .net 加密与解密
2015-04-08 asp.net mvc4 Json问题