而“editing"在LINQ to SQL实体中,我可以简单地将一个项分配给另一个项
本文关键字:简单 另一个 分配 一个 我可以 quot editing LINQ 实体 SQL to | 更新日期: 2023-09-27 17:50:28
为了更清楚,假设我有这样的代码:
void AlterItem(Orderable o) {
foreach(Orderable p in from Orderable n in dataContext.Orderables
where n.UID == o.UID
select n)
p = o;
dataContext.SubmitChanges();
当然这段代码不起作用,因为你不能给一个迭代变量赋值,这对我来说很清楚。还有比重写特定字段更好的方法吗?我尝试了Single(),但在将一个变量分配给另一个变量后,它不应用更改。
对不起,如果这是以前问过的。我努力寻找答案,但失败了。
不,除了foreach()
参数问题,一个简单的p = o;
只会复制一个引用。
变量和对象之间似乎存在混淆。通过下面的代码,所发生的一切是变量p
指向与o
参数相同的对象,而不是来自dataContext.Orderables.First()
的返回对象。当您提交更改时,实际上没有提交任何内容,因为没有更改任何数据库对象。只修改了一个引用:
void AlterItem(Orderable o)
{
var p = dataContext.Orderables.First();
p = o;
dataContext.SubmitChanges();
}
为了改变从dataContext.Orderables.First()
返回的对象,你必须改变其属性。您还可以通过foreach
变量修改对象,如下所示:
var p = dataContext.Orderables.First();
p.Property1 = o.Property1;
// etc...
dataContext.SubmitChanges();