2011-07-12 5 views
-2

ここに私が頻繁に質問している質問があります。ここには繰り返しのコードとコードは次のとおりです。このショートコードとシンプルコードを最適化する方法(ベストプラクティスの質問を含む)

private static void delete(Guid teamID, Guid repID) 
{ 
    using (var context = AccesDataRépart.GetNewContext()) 
    { 
     Team_Representant teamRepresentant = getTeamRep(teamID, repID); 
     if (teamRepresentant != null) 
      context.Team_Representant.DeleteOnSubmit(teamRepresentant); 
     context.SubmitChanges(); 
    } 
} 

private static Team_Representant getTeamRep(Guid teamID, Guid repID) 
{ 
    using (var context = AccesDataRépart.GetNewContext()) 
    { 
     return (from c in context.Team_Representant 
       where c.RepID == repID && 
         c.TeamID == teamID 
       select c).FirstOrDefault(); 
    } 
} 

それは非常に頻繁に使用され、getTeamRep機能を持つことが普通です。一方、私はそれが追加のステップを生成し、一般的に遅くなるので、Delete関数に含まれるクエリを繰り返さない。

このような場合はどうしますか? Delete機能でgetTeamRep linqクエリを繰り返すか、この余分な作業負荷を受け入れますか?

ありがとうございます!

+0

静的メソッド?これはリポジトリですか?またはWebサービスですか? –

+1

あなたに余分な文脈を教えてもらえますか? –

+0

データアクセスクラスなので静的です。 Webサービスではなく、近くにあります。今は-1と評価されている理由は分かりません。問題は短く明確ですので、私は人の時間を無駄な情報で浪費しません。 – Mathieu

答えて

1

私は二度と何もしません:)。 getTeamRepの結果を保持する変数を作成します。

これまで試みたことがない場合は、静的なものを取り除き、これらのすべてのインスタンスメソッドを作成してください。 TeamクラスとRepクラスを持ち、チームに彼らのRepsが含まれるようにしてください。この方法でもっと楽しいかもしれませんし、同じオブジェクトを2回探すという全面的な問題を防ぐ傾向があります。

これは優先事項です。ほとんどの場合、より少数のパラメータしかないので、私はインスタンスメソッドをよりエレガントに見つける:

Team team = new Team(teamID); 

team.Delete(repID); 
+0

私はこのように考えなかったが、私はそれが好きだ。私は次のアプリでこのアイデアを確実に実行します(これはほぼ完了しています)。ありがとうございました! – Mathieu

+1

私は上記の例で示唆したように、IEnumerableインターフェイス(またはそれ以上)をTeamクラスに実装すると、自動的に表示される.NETでデータバインディングを行うことができますReport、WinFormまたはWebForm、WPFコントロールなどの各チームの担当者をインスタンス化します。 – hoodaticus

+0

追加してくれてありがとう、私は確かにこれをdiggする! – Mathieu

関連する問題