现在,我必须以传统方式调用存储过程,这非常繁琐.是否有一个ORM在处理存储过程方面做得很好:
>具有结构化的输入/输出参数,表示表值类型
>轻松允许输出参数为用户定义的类型,包括标量和表值
>返回多个记录集
琐碎的:
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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)