而“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(),但在将一个变量分配给另一个变量后,它不应用更改。

对不起,如果这是以前问过的。我努力寻找答案,但失败了。

而“editing"在LINQ to SQL实体中,我可以简单地将一个项分配给另一个项

不,除了foreach()参数问题,一个简单的p = o;只会复制一个引用。

最好的方法是编写代码来复制属性,也许可以使用AutoMapper。

变量和对象之间似乎存在混淆。通过下面的代码,所发生的一切是变量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();
相关文章: