我已经搜索了一段时间的“行未找到或更改”错误,我只是无法看到错误是如何在我的应用程序中造成的。为什么我在这里得到“行未找到或更改”错误?
我有一个叫做DataAccess的外观类,它封装了多个存储库,并在我的应用程序中传递。每一个控制器都依赖于DataAccess,所以我把它连接起来以便按需要传递出去。
数据访问看起来大致是这样的,在截断/抽象形式:
public class DataAccess : IDataAccess
{
private MyDataContext DataContext = new MyDataContext();
public Repository1 Repo1 = new Repository1();
public Repository2 Repo2 = new Repository2();
public DataAccess()
{
Repo1.DataContext = DataContext;
Repo2.DataContext = DataContext;
}
}
然后,每个控制器有像这样在IDataAccess的依赖:
public class MyControllerBase
{
[Dependency]
IDataAccess DataAccess { get; set; }
}
团结手这些出根据显示的内容为正常配置,在Global.asax中注册类型,将控制器连接到工厂,统一解析。此外,我用PerThreadLifetimeManager()注册它,我不确定是否正确。 -
对于这个伟大工程的大部分不过问题可以通过转载:
- 去编辑动作,然后再发布编辑(重定向到索引)
- 返回到编辑行动和企图要发布另一个编辑,或者进入删除操作并尝试在同一项目上发布删除
这会引发“未找到或未找到行”错误。每个操作(编辑和删除)都会在DataContext上调用SubmitChanges()。所以我不太确定这里发生了什么。如果任何人有任何想法,他们会非常好的接受。
干杯,
Tim。
非常感谢,这已经解决了我目前遇到的问题。有一个玩弄,我现在有一些新的问题与实施(1),偶尔“试图附加或添加一个不是新的实体,可能是从另一个DataContext加载”错误..有关于此的任何想法? – Hanshan
好吧,通常这意味着你正试图附加一个已经从另一个上下文中使用过的实体。那实际上是怎么回事?我不是EF专家(或用户),所以我真的不能说。 –
谢谢,伙计 - 我必须仔细观察这一张 - 你在这里给了我很大的帮助。干杯。 – Hanshan