在 LINQ 中编辑行



我正在尝试使用下面的 Linq 更新行,但由于某种原因它没有进行更新。我已经用谷歌搜索过它,可以确保我的表中肯定有主键。下面是我的代码:

public static ReturnedSavedSearchStatus editSavedSearches(Eteach.Objects.SavedSearch savedSearch)
{
ReturnedSavedSearchStatus rtn = new ReturnedSavedSearchStatus();
ET_TBL_TalentpoolSavedSearch dbsavedSearch = new ET_TBL_TalentpoolSavedSearch();
dbsavedSearch = AutoMapper.Mapper.Map<ET_TBL_TalentpoolSavedSearch>(savedSearch);
if (dbsavedSearch.id < 0)
{
rtn.status = false;
rtn.description = "Error: Id cannot be less then 0";
}
else
{
using (EteachDatabaseDataContext ctx = new EteachDatabaseDataContext())
{
var result = ctx.ET_TBL_TalentpoolSavedSearches.SingleOrDefault(s => s.id == dbsavedSearch.id);
if (result != null)
{
result = dbsavedSearch;
//   ctx.ET_TBL_TalentpoolSavedSearches.InsertOnSubmit(dbsavedSearch);
ctx.SubmitChanges();
rtn.status = true;
rtn.description = "Saved Search saved";
}
}
}
return rtn;
}

我认为您的问题在于分配整个对象,这不会更改对象内容,而是更改对象的内存地址(您正在丢失对象(,您应该像这样单独更新每个属性

result.Property1 = dbsavedSearch.Property1;
result.Property2 = dbsavedSearch.Property2;
...
...
ctx.SubmitChanges();

希望这能帮助你

最新更新