【发布时间】:2012-05-29 03:29:07
【问题描述】:
基本上,我想对存储过程使用“漂亮”的 Dapper 语法,而不必手动使用 exec MySproc @p1, @p2, @p3, @p4 等等,但我需要能够传入具有各种属性集的强类型对象和让这个对象用于映射参数。我知道我可以用匿名对象做到这一点,但我正在考虑的场景类似于一个复杂的搜索表单,其中可以搜索多个字段,并且相应的存储过程可以有很多参数(许多具有默认值)。
理想情况下,我希望能够做这样的事情:
var cust = new Customer();
cust.FirstName = ...
cust.LastName = ...
// using .NET 3.5 so need to use ugly syntax :(
var result = connection.Query<Customer>("MySproc", cust, null, false, null, CommandType.StoredProcedure).Single();
但是,这不起作用并引发错误,因为我的 Customer 对象可能有十几个或更多属性,在这种情况下我只寻找两个; Dapper 似乎只是检查每个属性并分配一个值,假设 sproc 中可能没有相应的参数。
我可以使用 PetaPoco 执行类似的操作(传入强类型对象或匿名对象),但我正在寻找比 PetaPoco 更抽象的东西。
我想在 Dapper(或其他微 ORM 中做的事情吗?我不能使用 NHibernate 或重量级 ORM),或者有没有一种方法我忽略了获得相同功能而不必编写 exec有十几个参数的语句?
【问题讨论】:
标签: stored-procedures dapper query-by-example