基本上,我想爲存儲過程使用「nice」Dapper語法,而不必手動使用exec MySproc @p1, @p2, @p3, @p4
等等,但我需要能夠傳入強類型對象,並設置各種屬性並使此對象用於映射參數。我知道我可以用一個匿名對象來做到這一點,但我想到的場景就像是一個複雜的搜索表單,其中可以搜索多個字段,並且相應的存儲過程可以有很多參數(很多都有默認值)。Dapper是否支持使用存儲過程強類型化對象?
理想我希望能夠做這樣的事情:
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();
然而
,不工作,並拋出一個錯誤,因爲我的客戶對象可能有十幾個或更多的屬性,和我在這種情況下,我只尋找兩個; Dapper似乎只是檢查每個屬性並分配一個值,假設在sproc中有一個對應的參數可能不存在。
我能做類似這樣使用PetaPoco東西(傳遞一個強類型的對象或一個匿名對象),但我要找的東西一點點比PetaPoco是更抽象。我想在Dapper(或者其他的微型ORM?我不能使用NHibernate或者一個重量級的ORM)中做什麼,或者我有一種方法可以忽略不計, exec聲明與什麼可能是十幾個參數?
這就是我所害怕的,因爲使用匿名對象阻止我根據輸入動態地構建對象。不過,輔助方法的想法很有趣。 –
@WayneM看到我的編輯... –
現在看起來很有趣。我將不得不玩弄,看看它是如何工作的。非常感謝,山姆! –