2010-11-21 12 views
0

私は5つのプロパティを持つビジネスオブジェクトを持っていて、それらのプロパティのうち4つに一致する名前を持つ4つのカラムを返すsprocを持っているとします。 ExecuteSprocAccessorの呼び出しは失敗します。たとえば、EntLibにそれを無視するように指示するために、属性で5番目のプロパティをマークする方法はありますか?ExecuteSprocAccessorを呼び出すと、ビジネスオブジェクト内のプロパティを無視するようにEntLibに指示できますか?

答えて

1

マッパーを作成するときにこれを行うことができます。基本的には、このような何か:

var results = db.ExecuteSprocAccessor("some_sproc", 
    MapBuilder<MyTargetType>.MapAllProperties() 
     .DoNotMap("SomethingThatDoesntMatch") 
     .Build(), 
    param1, param2, param3); 

財産SomethingThatDoesntMatchには、何もマッピング名で結果にすべてのパラメータと一致しますが、ではないでしょう。

注意すべき点:MapBuilderによる結果セットマッパーの作成は高価で、自動的にキャッシュされません。この呼び出しをループで実行している場合は、おそらく遅いでしょう。事前にマッパーを作成して持ち歩くか、アクセサを個別に作成してアクセサーを保持することをおすすめします。

+0

今はマッパーを使用していません。私はオブジェクトを慎重に構築して、私のsprocsが返すコラムと一致させます。非常にきれいで、ほとんどの場合に機能します。私は属性でマッピングしたくないプロパティを単純に飾ることができればと思っていました。しかたがない。今、私は自分のロジックレイヤーのループを実行しています。オブジェクトをパラメータごとにコピーしています。これは、sprocアクセサから必要な数の他のパラメータを含むオブジェクトのリストに戻っています。パフォーマンスの問題がある場合は、両方の方法をテストし、より速い方法を使用します。ありがとう!!! – birdus

+2

さて、あなたはマッパーを使用しています。暗黙のうちに作成されています。この場合、明示的に作成する必要があります。私たちは非常に故意に物事を単純に保ちました。誤ってORMツールを作成するのではなく、データベースの結果を簡単に使用できるようにしたかっただけです。 –

+0

ああ。あなたはEntLibチームです。クール。ええ、私のsprocsから戻ってオブジェクトのリストを取得するスーパースリックです。私は本当にそれが好き。ご協力いただきありがとうございます。 – birdus

関連する問題