实体框架更新时间&带参数化的日期列

时间:2013-03-08 17:35:41

标签: asp.net entity-framework

我已将所有代码从原始ADO.NET SQLCommand更改为Entity Framework,以便日后更改代码的访问权限。但是,我已经意识到Entity Framework有许多缺点,它并不像将原始SQL命令注入数据库那么简单。此外,我使用Reverse EngineeringModels & Mapping生成MS Sql Server

目前,我正在尝试执行以下操作,但没有一列会更新。

string sql = @"UPDATE [ProductDB] SET CreatedProduct_Time=getdate(), CreatedProduct_Date=getdate()" + " WHERE [Material_No] = @Material_No";

db.Database.ExecuteSqlCommand(sql, new SqlParameter("@Material_No", materialnotxt));

列未更新。

我怀疑Entity Framework是否会帮助我维护我的代码供将来使用,是否值得使用它而不是旧的raw SQL code?到目前为止,存在许多限制因素,需要更高的学习曲线。

我在网上找到的一些令人困惑的部分context.Database.ExecuteSqlCommandMSDN http://msdn.microsoft.com/en-us/library/bb738684.aspx之间的差异与我的方法完全不同。

修改

在插入Date的所有信息时,我使用了不同的方法来插入Timetextbox

using (var db = new ROGContext())
        {

            ProductDB product = new ProductDB
            {
                Material_No = long.Parse(MaterialNo_txtbox.Text),
                Product_Line = ProductLineDropDownList1.SelectedItem.Text,
                Product_Description = Description_txtbox.Text,
                Size = Size_txtbox.Text,
                UOM = UOM_txtbox.Text,
                SupplierID = long.Parse(SupplierCountryListBox.SelectedItem.Value),
                CreatedProduct_Date = DateTime.Parse(System.DateTime.Now.ToShortDateString()), //in the SQL database I have set the datatype as date to get yyyy/mm/dd
                CreatedProduct_Time = DateTime.Now.TimeOfDay  //in the SQL database I have set the datatype as time(0) to get hh:mm:ss
            };

            long queryselect = (from materialno in db.ProductDBs
                               where materialno.Material_No == product.Material_No
                               select materialno.Material_No).SingleOrDefault();

            if (queryselect != long.Parse(materialnotxt))
            {
                Label1.Text = "Product successfully added in database";
                Label1.Visible = true;
                db.ProductDBs.Add(product);
                db.SaveChanges();             
            }             

1 个答案:

答案 0 :(得分:0)

您可以使用Context.ExecuteStoreCommand进行插入,更新和删除。

参见Entity Framework 4.0 Recipes: A Problem-Solution Approach

的第64页

回答您编辑的部分:

  1. ExecuteStoreQuery选择
  2. ExecuteStoreCommand用于插入,更新和删除
  3. Entity Framework v4 – Tips and Tricks