gpt4 book ai didi

c# - LINQ to SQL - 在不创建新 DataContext 的情况下保存实体?

转载 作者:行者123 更新时间:2023-11-30 19:33:55 26 4
gpt4 key购买 nike

我收到这个错误

Cannot add an entity with a key that is already in use

当我尝试保存一个项目时

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Item item)
{
Global.DataContext.Items.Attach(item);
Global.DataContext.SubmitChanges();

return View(item);
}

那是因为我无法将该项目附加到全局 DataContext。

是否可以在不创建新的 DataContext 且无需手动分配项目的每个字段的情况下保存项目?

(我对 LINQ 很陌生)

编辑:由于下面的评论,我意识到静态 DataContext 会导致问题,现在是这样

public static AbcDataContext DataContext
{
get
{
if (!HttpContext.Current.Items.Contains("DataContext"))
HttpContext.Current.Items["DataContext"] = new AbcDataContext(ConnectionString);
return (AbcDataContext)HttpContext.Current.Items["DataContext"];
}
}

(Rex 可能不同意,但我现在懒得更改整个代码 - 可能会晚些时候)

最佳答案

没有全局/静态 DataContext,这会让您很痛苦。 DataContext 应该表示单个逻辑事务(“进入,执行 x/y/z 并退出”)。它们制造成本低廉且易于处置;绝对没有理由尽量减少它们,更不用说保持全局/静态了。

关于c# - LINQ to SQL - 在不创建新 DataContext 的情况下保存实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2672234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com