c# – 与ASP.NET 4和SQL Server中的存储过程一起使用的ORM
发布时间:2020-12-15 08:26:33 所属栏目:百科 来源:网络整理
导读:我想知道是否有一个好的 ORM可以自动完成我现在必须做的一些手工工作.我们的应用程序大量使用存储过程,这意味着与数据库的任何交互都通过存储过程. 现在,我必须以传统方式调用存储过程,这非常繁琐.是否有一个ORM在处理存储过程方面做得很好: 具有结构化的输
我想知道是否有一个好的
ORM可以自动完成我现在必须做的一些手工工作.我们的应用程序大量使用存储过程,这意味着与数据库的任何交互都通过存储过程.
现在,我必须以传统方式调用存储过程,这非常繁琐.是否有一个ORM在处理存储过程方面做得很好: >具有结构化的输入/输出参数,表示表值类型 解决方法
Dapper具有相当广泛的存储过程支持.
琐碎的: create proc spGetOrder @Id int as select * from Orders where Id = @Id select * from OrderItems where OrderId = @Id 它可以使用以下内容进行映射. var grid = cnn.QueryMultiple("spGetOrder",new {Id = 1},commandType: CommandType.StoredProcedure); var order = grid.Read<Order>(); order.Items = grid.Read<OrderItems>(); 此外,您还支持: >一个多映射器,允许您将单行添加到多个对象 例如: create proc spGetOrderFancy @Id int,@Message nvarchar(100) output as set @Message = N'My message' select * from Orders join Users u on OwnerId = u.Id where Id = @Id select * from OrderItems where OrderId = @Id return @@rowcount 可以映射为: var p = new DynamicParameters(); p.Add("Id",1); p.Add("Message",direction: ParameterDirection.Output); p.Add("rval",direction: ParameterDirection.ReturnValue); var grid = cnn.QueryMultiple("spGetOrder",p,commandType: CommandType.StoredProcedure); var order = grid.Read<Order,User,Order>((o,u) => {o.Owner = u; return o;}); order.Items = grid.Read<OrderItems>(); var returnVal = p.Get<int>("rval"); var message = p.Get<string>("message"); 最后,Dapper还允许自定义参数实现: public interface IDynamicParameters { void AddParameters(IDbCommand command); } 实现此接口时,您可以告诉Dapper您希望添加到命令中的参数.这允许您支持表值参数和其他数据库特定功能. You’re using it now on StackOverflow … (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |