0
比方說,我有一個具有5個屬性的業務對象和一個返回4列名稱與這些屬性匹配的名稱的存儲過程。對ExecuteSprocAccessor的調用將失敗。有沒有一種方法可以用屬性標記第5個屬性,例如告訴EntLib忽略它?當我調用ExecuteSprocAccessor時,我可以告訴EntLib忽略業務對象中的一個屬性嗎?
比方說,我有一個具有5個屬性的業務對象和一個返回4列名稱與這些屬性匹配的名稱的存儲過程。對ExecuteSprocAccessor的調用將失敗。有沒有一種方法可以用屬性標記第5個屬性,例如告訴EntLib忽略它?當我調用ExecuteSprocAccessor時,我可以告訴EntLib忽略業務對象中的一個屬性嗎?
您可以在創建映射器時執行此操作。基本上,這樣的事情:
var results = db.ExecuteSprocAccessor("some_sproc",
MapBuilder<MyTargetType>.MapAllProperties()
.DoNotMap("SomethingThatDoesntMatch")
.Build(),
param1, param2, param3);
那將符合所有參數由名的成績,但不映射到任何財產SomethingThatDoesntMatch。
需要注意的一點:通過MapBuilder創建結果集映射器很貴,而且它不會自動緩存。如果你在循環中進行這個調用,它可能會很慢。我建議提前創建映射器並保持它,或者分別創建訪問器並保持訪問器。
現在我甚至沒有使用映射器。我只是小心地構建我的對象,以便與我的sprocs返回的列匹配。它非常乾淨,適用於大多數情況。我希望我可以簡單地裝飾我不想用屬性映射的屬性。好吧。現在,我正在運行邏輯層中的一個循環,並通過參數複製對象參數 - 我從sproc訪問器返回到包含我需要的其他幾個參數的對象列表中。如果我遇到性能問題,我會測試兩種方法並使用更快的方法。謝謝!!! – birdus 2010-11-23 04:36:43
好吧,你正在使用一個映射器,它只是隱含地爲你創建。是的,在這種情況下,你必須明確地創建一個。我們非常刻意將事情簡單化;我們只是希望更容易地使用數據庫結果,而不是意外地構建ORM工具。 – 2010-11-23 04:39:36
啊。你在EntLib團隊中。涼。是的,從我的sprocs獲取對象列表是超級光滑的。我很喜歡。謝謝你的幫助。 – birdus 2010-11-23 04:46:12