使Linq-to-Sql编译的查询用于插入和更新
本文关键字:插入 更新 用于 查询 Linq-to-Sql 编译 | 更新日期: 2024-10-24 14:03:22
我正在进行选择编译查询,如所示
但我的问题是,如何为Insert和Update进行编译查询?
mine插入查询是
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();
您希望加快代码的哪一部分?前七行与Linq本身无关。第8行,db.tbl_desc_indexes.InsertOnSubmit(tabledesc);
只是传递一个引用。
做所有艰苦工作的声明是
db.SubmitChanges();
这基本上做了两件事:找出应该向数据库发送哪些插入和更新,并发送它们。作为第二步的一部分,生成实际语句是非常有效的,尤其是对于插入语句。在更新语句的情况下,生成更复杂(即有一些开销),因为它根据更新的列生成不同的更新语句,但结果是网络使用效率更高,SQL Server通常执行速度更快。
您唯一能做的就是创建用于插入和更新(以及删除)的存储过程,以满足您的特定需求。虽然不能保证这些会更快,但你可以尝试和测量。
也就是说,在某些情况下,通过执行更新或删除的设置操作,即一次更新或删除多行,可以获得非常显著的性能提升。存储过程就是这样。