更新记录Linq-to-SQL
我正在阅读一本书 – 使用Visual Studio 2008的ASP.Net 3.5企业应用程序开发,当它讨论使用Linq-to-SQL更新数据库中的记录时,它使用以下代码:
MyUserAccount ua = new MyUserAccount { ... Update fields }; ua.UserAccountID = Convert.ToInt32(session["UserAccountID"]); ua.Version = Convert.ToInt32(session["Version"]); MyDataContext db = new MyDataContext(); db.MyUserAccounts.Attach(ua,true); db.SubmitChanges();
与我习惯的相比,我只是将AccountID保存在会话变量中,然后从数据库中获取记录,进行更改,然后提交更改。
BtnUpdate
int UserAccountID = Convert.ToInt32(Request["UserAccountID"]); //Get User fron Context MyDataContext db = new MyDataContext(); MyUserAccount ua = db.MyUserAccounts.Single( x => x.UserAccountID == UserAccountID); //Make changes ua.Blah = ""; db.SubmitChanges();
所以我的问题是这样做的首选方法是什么? 在过去没有看到这个,我不确定首选或最佳方式是什么。 任何帮助表示赞赏。
涉
注意:
我的原始问题,有人改变了我的标题,是什么是更新记录的最佳Linq-to-SQL方式。 所以我更改了代码以使用会话变量,并将标题恢复为原始版本。 请阅读整个问题,因为我只是在寻找使用Linq-to-SQL更新数据库中记录的最佳方法。
就sql产生而言,前者会生成类似的Sql语句
Update MyUserAccount set blah=@Blah where UserAccountID = @UserAccountID
而后者将产生
Select UserAccountID, Blah, .... From MyUserAccount where UserAccountID = @UserAccountID Update MyUserAccount set blah=@Blah where UserAccountID = @UserAccountID
不要这样做,将关键数据存储到会话中。 隐藏字段(viewstate是隐藏字段)可能被用户篡改。 会话将阻止用户更改值。
书中的例子是在viewstate中存储useraccount和版本信息 – 这是一个很大的隐藏字段,asp.net用它来维护状态和存储表单变量。事实上,如果你有viewstate转换,你的隐藏字段可能会在viewstate中上。
如果关闭视图状态并使用隐藏字段,则页面可能加载速度更快(由于维护视图状态所涉及的膨胀)。 但这可能会影响function。
您的代码中的linq to sql语句也会产生与本书不同的结果 – 所以我假设书籍代码不会按照您的意愿更新,而不会根据您的需要进行调整。
@Matthew是正确的,如果您有安全问题,那么明文隐藏字段是存储某些东西的坏地方(+1)。
Viewstate在数据上添加了一些加密,因此与使用原始隐藏字段相比,它不容易被篡改。 用户信息的最佳方法是将其存储在会话中。
上述就是C#学习教程:更新记录Linq-to-SQL分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/987762.html