结果集上的DataContext.SubmitChanges是否可以使用连接表创建DataContext.ExecuteQuery?

时间:2014-05-14 13:58:55

标签: sql linq linq-to-sql

我想使用Linq to SQL更新表中的某些字段,我需要将此表连接到另一个表(以进行一些过滤等)。

因此,一个简单的例子如下所示,注意到sql run中有一个连接

public class JoinQueryResults
  {
    [Column(IsPrimaryKey = true)]
    public string MyKey;

    [Column]
    public string Name;

    [Column] 
    public int TotalOrders;

    [Column]
    public string OrdersComment;
  }

  public class MyClass
  {
    public void Update(IDbConnection connection)
    {
      DataContext context = new DataContext(connection);
      const string sql = @"select ord.MyKey, cust.Name, ord.TotalOrders ord.OrdersComment 
                           from Customers cust join Orders ord on cust.MyKey = ord.MyKey";

      var list = context.ExecuteQuery<JoinQueryResults>(sql).ToList();
      foreach (var row in list)
        row.OrdersComment = "Processed";

      var writer = new System.IO.StringWriter();
      context.Log = writer;

      // This does nothing to the underlying data
      context.SubmitChanges();

      // str is emtpy string after the following
      var str = writer.ToString();
    }
  }

这一切似乎运行良好,但是当我调用context.SubmitChanges()时,基础数据没有变化(在sql数据库中)。我在另一篇文章中看到尝试使用上面的日志编写器,我的情况下的str是空的。

这应该有用吗?如果您在使用上面的联接表时能够更新,如果是,那么我做错了什么?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您必须以与标记任何其他实体相同的方式标记类型。似乎缺少Table属性。