我想使用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是空的。
这应该有用吗?如果您在使用上面的联接表时能够更新,如果是,那么我做错了什么?
提前感谢您的帮助!
答案 0 :(得分:0)
您必须以与标记任何其他实体相同的方式标记类型。似乎缺少Table
属性。