2014-09-27 42 views
0

我是ASP.NET MVC 5 Razor的新手,我需要一些帮助,我如何在数据库中上传行。如何更新ASP.NET MVC 5中的表Razor数据库

我也使用EF6现有的数据库为我的模型。

这就是我想要做的事:

@if (Request.QueryString["GetUser"] != null && Request.QueryString["Update"] == "Open") 
          { 
           ViewBag.Notification = "Do you want to sync " + @Request.QueryString["GetUser"].ToString() + " to ActiveDirectory2?"; 
          } 
          @if (Request.QueryString["GetUser"] != null && Request.QueryString["Update"] == "Update") 
          { 
           using(GWActiveDirectory.Models.GW_UTAEntities db = new GWActiveDirectory.Models.GW_UTAEntities()) 
           { 
            var query = "UPDATE ActiveDirectory2" 
               + " SET SamAccountName = '" + DataStorage.Rows[0][0].ToString() 
               + "', EmployeeNumber = '" + DataStorage.Rows[0][9].ToString() 
               + "', GivenName = '" + DataStorage.Rows[0][4].ToString() 
               + "', Surname = '" + DataStorage.Rows[0][1].ToString() 
               + "', EmailAddress = '" + DataStorage.Rows[0][5].ToString() 
               + "', Enable = '" + DataStorage.Rows[0][3].ToString() 
               + "', Guid = '" + DataStorage.Rows[0][2].ToString() 
               + "', SID = '" + DataStorage.Rows[0][6].ToString() 
               + "', DateCreated = '" + DataStorage.Rows[0][7].ToString() 
               + "', DateModified = '" + DataStorage.Rows[0][8] + "'" 
               + " WHERE SamAccountName = @SamAccountName"; 
            db.ActiveDirectory2.SqlQuery(query,Request.QueryString["GetUser"]) 
            db.SaveChangesAsync(); 
            Response.Redirect("?SearchString=" + ViewBag.searchString + "&GetUser=" + Request.QueryString["GetUser"]); 
           } 

          } 

但问题是,当我尝试运行我的节目表ActiveDirectory2没有更新。

+2

在这个层面上 - 混合了6个术语和技术,以至于即使标题没有任何意义(没有“ASP.NET MVC 5 Razor数据库”),我会认真推荐一本书,一些在线tutotrials,像asp.net。一旦你至少知道了基本术语以及mvc似乎在一般情况下的工作方式,我们可以帮助你做得更好。这是在“嘿,我不知道我在做什么”这个概念的过程中,“我有一个特定的问题”。 – TomTom 2014-09-27 05:48:09

回答

3

SqlQuery用于查询。对于更新,您需要使用ExecuteCommand但是您似乎想要使用EF,在这种情况下,您不会手动缝合SQL查询,而是从要更新的数据库中提取实体,然后设置属性并调用SaveChanges。还请注意,在您的代码片段中,SaveChanges调用没有意义,因为它是无操作的。因为您在更新数据库时绕过了EF,所以上下文不跟踪任何实体,所以SaveChanges什么都不做。

最后,您创建命令的方式容易受到SQL注入的攻击。如果您使用EF,EF会正确构建命令。

相关问题