我想知道是否有一个好的
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>();
此外,您还支持:
>一个多映射器,允许您将单行添加到多个对象
>输入,输出和返回参数支持
>用于数据库特定参数处理的可扩展接口(如TVP)
例如:
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); }
原文地址:https://www.jb51.cc/csharp/243583.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。