C#/ PLINQO - 将同一实体分离并重新连接到同一个上下文失败

时间:2011-05-05 19:44:01

标签: c# linq-to-sql plinqo

我正在使用PLINQO作为我的LINQ-TO-SQL数据层。

我有以下代码(不是真正的代码,只是为了重新产生我得到的错误):

var context = new MyDataContext();
var user = context.User.GetByKey("username");
user.Detach();
context.User.Attach(user);

使用InvalidOperationException执行最后一行代码结果,并显示以下错误消息:“无法附加已存在的实体。”

我认为Detach方法应该将实体与上下文分离,似乎它只是将实体中的链接移除到上下文,但上下文仍然“记住”实体。

如何完全分离实体以便我不会收到错误?

谢谢, Koby

2 个答案:

答案 0 :(得分:1)

我得出结论,我的设计是不正确的,并没有考虑对linqtosql的限制,我对代码进行了更改,所以这样的情况不会发生,如果它会抛出异常。

答案 1 :(得分:0)

尝试将ObjectStateManager与附加实体一起使用:

var context = new MyDataContext();
var user = context.User.GetByKey("username");
// change field values
...
user.AnyUserField = "123";
...
context.AcceptAllChanges();
context.ObjectStateManager.ChangeObjectState(user, EntityState.Added); // or use EntityState.Modified if it already exist anywhere
context.SaveChanges();