c# – 与ASP.NET 4和SQL Server中的存储过程一起使用的ORM

c# – 与ASP.NET 4和SQL Server中的存储过程一起使用的ORM,第1张

概述我想知道是否有一个好的 ORM可以自动完成我现在必须做的一些手工工作.我们的应用程序大量使用存储过程,这意味着与数据库的任何交互都通过存储过程. 现在,我必须以传统方式调用存储过程,这非常繁琐.是否有一个ORM在处理存储过程方面做得很好: >具有结构化的输入/输出参数,表示表值类型 >轻松允许输出参数为用户定义的类型,包括标量和表值 >返回多个记录集 Dapper具有相当广泛的存储过程支持. 琐碎 我想知道是否有一个好的 ORM可以自动完成我现在必须做的一些手工工作.我们的应用程序大量使用存储过程,这意味着与数据库的任何交互都通过存储过程.

现在,我必须以传统方式调用存储过程,这非常繁琐.是否有一个ORM在处理存储过程方面做得很好:

>具有结构化的输入/输出参数,表示表值类型
>轻松允许输出参数为用户定义的类型,包括标量和表值
>返回多个记录集

解决方法 Dapper具有相当广泛的存储过程支持.

琐碎的:

create proc spGetorder    @ID intasselect * from Orders where ID = @IDselect * 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>();

此外,您还支持:

>一个多映射器,允许您将单行添加到多个对象
>输入,输出和返回参数支持
>用于数据库特定参数处理的可扩展接口(如TVP)

例如:

create proc spGetorderFancy    @ID int,@Message nvarchar(100) outputasset @Message = N'My message'select * from Orders join Users u on OwnerID = u.ID where ID = @IDselect * from OrderItems where OrderID = @IDreturn @@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 …

总结

以上是内存溢出为你收集整理的c# – 与ASP.NET 4和SQL Server中的存储过程一起使用的ORM全部内容,希望文章能够帮你解决c# – 与ASP.NET 4和SQL Server中的存储过程一起使用的ORM所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1249334.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存