1
我在網站上搜索了答案,但是我沒有找到答案。我有以下問題......Linq To Sql使用AttachAll。 DuplicateKeyException
我想在數據庫中更新多個記錄如下:
public void SaveJItem(List<DataForDespatcher> Jitem)
{
JitemsTable.InsertAllOnSubmit(Jitem.Where(i => i.Id ==0));
JitemsTable.AttachAll(Jitem.Where(i => i.Id != 0));
JitemsTable.Context.Refresh(RefreshMode.KeepCurrentValues, Jitem);
JitemsTable.Context.SubmitChanges();
}
表描述如下:
[Table(Name = "tanks")]
public class DataForDespatcher
{
[Column(IsPrimaryKey = true, IsDbGenerated = true,AutoSync = AutoSync.OnInsert)]
public int Id { get; set; }
/*bla bla bla */
}
當我更新我收到錯誤:
"DuplicateKeyException" in "JitemsTable.AttachAll(Jitem.Where(i => i.Id != 0));".
如何正確更新數據?
地址: 剃鬚刀更新形式:
@inherits WebViewPage<IEnumerable<DomainModel.Entities.DataForDespatcher>>
/*bla bla bla*/
數據控制器保存(獲得):
public ViewResult EditForDispatcher(int group)
{
var list = DataRep.JItems.Where(x => x.group == group).Select(x => x);
return View(list);
}
數據控制器保存(後):
[HttpPost]
public ActionResult EditForDispatcher(List<DataForDespatcher> Jitem, string addNewOperation, string sendParam, string operations)
{
if (ModelState.IsValid)
{
int group = DataRep.JItems.ToList().Max(x => x.group + 1);
if (Jitem.Any(x => x.group != 0))
foreach (var dataForDespatcher in Jitem)
dataForDespatcher.group = Jitem.Where(x=>x.group!=0).Select(x=>x.group).First();
else
foreach (var dataForDespatcher in Jitem)
dataForDespatcher.group = group;
DataRep.SaveJItem(Jitem);
}
return View(Jitem);
}
我沒有看到你已經改變,依然保持如我...... HTTP://pixs.ru/showimage/Snimokekra_7790459_6293546.png –
我不(jitem.Select(x => x.Id).First()== 0) JitemsTable.InsertAllOnSubmit(Jitem);'似乎是錯誤的,因爲Jitem可以同時添加和更新項目和Jitem.Select(x => x.Id).First()可以返回不是更新的項目ID。 –
那麼你不會幫助我? =( –