【问题标题】:How to update Database with LINQ? Linq-to-SQL如何使用 LINQ 更新数据库? Linq 到 SQL
【发布时间】:2016-08-20 03:20:11
【问题描述】:

我正在尝试通过 Linq-to-SQL 更新数据库。

我有一个名为 Staff_Time_TBL 的表,它有 9 列。我正在尝试更新可能多行的单列记录。

我的 LINQ 查询如下。它从列Section_Data从指定日期到另一个指定日期以及单个员工编号中获取数据。

DatabaseDataContext Sql = new DatabaseDataContext(ConnectionString);

var getList = Sql.Staff_Time_TBLs.Where(
               staff => staff.Staff_No == staffNo &&
               staff.Date_Data >= dateFrom &&
               staff.Date_Data <= dateTo)
               .Select(staff => staff.Section_Data).ToList();

然后我将使用foreach 循环来遍历集合并更新数据库,

foreach (var item in getList)
                {                    
                    item.Section_Data = "myValue";
                }
         Sql.SubmitChanges();

问题是下面这个,实体Section_Data不存在。

item.Section_Data

所以,我认为我没有正确组合 LINQ 以访问实体?如何修改查询以便访问实体以更新数据库?

【问题讨论】:

  • 我猜,但是因为您选择了staff.Section_Data,所以您不太可能再选择item.Section_Data。也许只是删除代码中的Select(...) 部分?
  • @DavidG,谢谢你是正确的。非常感谢您的帮助。

标签: c# linq linq-to-sql


【解决方案1】:
var getList = Sql.Staff_Time_TBLs.Where(
               staff => staff.Staff_No == staffNo &&
               staff.Date_Data >= dateFrom &&
               staff.Date_Data <= dateTo)
               .Select(staff => staff.Section_Data).ToList();

此查询将只为您提供 Section_Data 类型的数据,因为您选择的是 Section_Data,并且当您在其上运行一个 for each 时,您将能够访问仅与该属性相关的属性,因此只需从查询。

var getList = Sql.Staff_Time_TBLs.Where(
               staff => staff.Staff_No == staffNo &&
               staff.Date_Data >= dateFrom &&
               staff.Date_Data <= dateTo)
               .ToList();

现在您将能够访问其中的属性。

foreach (var item in getList)
{                    
   item.Section_Data = "myValue";
}
Sql.SubmitChanges();

【讨论】:

  • 做到了。非常感谢,最近几天我一直在摆弄这个。
【解决方案2】:

试试这个:

var getList = Sql.Staff_Time_TBLs.Where(
           staff => staff.Staff_No == staffNo &&
           staff.Date_Data >= dateFrom &&
           staff.Date_Data <= dateTo)
           .ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多