1

この質問にはすでに答えがあります。

示されているように、選択されたコンパイル済みクエリーを作成していますここに

しかし、私の質問は、InsertとUpdateのコンパイル済みクエリを作成する方法です。

挿入クエリは

DataClassesDataContext db = new DataClassesDataContext();
tbl_desc_index tabledesc = new tbl_desc_index();
tabledesc.ed_journal_id = Convert.ToInt32(Server.HtmlEncode(Request.Cookies["j_id"].Value));
tabledesc.editor_id = Convert.ToInt32(Server.HtmlEncode(Request.Cookies["editorid"].Value));
tabledesc.short_desc = ck1.Text;
tabledesc.abt_journal = ck2.Text;
tabledesc.aim_scope = ck3.Text;
tabledesc.indexed_in = ck4.Text;
db.tbl_desc_indexes.InsertOnSubmit(tabledesc);
db.SubmitChanges();

更新クエリは

 DataClassesDataContext db = new DataClassesDataContext();
 var update = db.tbl_desc_indexes.First(p => p.ed_journal_id == Convert.ToInt32(Server.HtmlEncode(Request.Cookies["j_id"].Value)) && p.editor_id == Convert.ToInt32(Server.HtmlEncode(Request.Cookies["editorid"].Value))); 
 update.short_desc = ck1.Text;
 update.abt_journal = ck2.Text;
 update.aim_scope = ck3.Text;
 update.indexed_in = ck4.Text;             
 db.SubmitChanges();


  • その重複していない....私は挿入と更新のためにコンパイルされたクエリを作る方法を知らないので - user2977985
  • @ジェームズは私の過ちを申し訳ありません.... - user2977985
  • サイドメモとして、それらの目的は何ですかServer.HtmlEncode電話?彼らは私には意味をなしません。これらのCookieに整数が含まれている場合や、使用していない場合には、特に有用なことは何もしません。それとも私は何かが足りないのですか? - Kris Vandermotten
  • はい、それらは整数を含みます - user2977985

1 답변


2

コードのどの部分をスピードアップしたいですか?最初の7行は、Linq自体とは関係ありません。 8行目db.tbl_desc_indexes.InsertOnSubmit(tabledesc);参照を渡すだけです。

すべての大変な作業を行うステートメントは、

db.SubmitChanges();

それは基本的に2つのことをします:どの挿入と更新がデータベースに送信されるべきかを見つけて、それらを送信します。 2番目のステップの一部である実際のステートメントの生成は、特に挿入ステートメントに対して非常に効率的です。更新ステートメントの場合、どの列が更新されたかによって異なる更新ステートメントが生成されるため、生成はより複雑になります(つまり、オーバーヘッドが発生します)が、ネットワーク使用率が向上し、多くの場合SQL Serverによる実行が速くなります。

あなたができる唯一のことは、あなたの特定のニーズに合わせて作られた挿入と更新(そして削除)のためのストアドプロシージャを作成することです。それらがより速いだろうという保証はありませんが、試すことができます。

とはいえ、状況によっては、更新または削除のセット操作、つまり一度に複数の行を更新または削除することで、パフォーマンスが大幅に向上することがあります。ストアドプロシージャはその時のやり方です。


  • わかりました私はもっと質問があります - user2977985
  • 私の選択クエリはvar rr = editordetail1(db、1,2)です。つまり、コンパイル済みクエリに2つの整数を渡したいのですが、コンパイル済みクエリをどのように作成する必要があるのですか?... ... public static Func< DataClassesDataContext、int、IQueryable< editor_j_inf>> editordetail1 = CompiledQuery.Compile((DataClassesDataContext db、int a)=> db.editor_j_infsのp1からp1.ed_journal_id ==並び順p1.editor_idの順に選択p1); //私のプリコンパイルプロセス - user2977985
  • @Xtremcoolその最後の発言が新しい質問である場合は、この質問に対する回答へのコメントではなく、質問として質問してください。 - Kris Vandermotten
  • わかりました私は新しい質問をしています - user2977985
  • 見てstackoverflow.com/questions/20655383/… - user2977985

リンクされた質問


関連する質問

最近の質問