Трудно обновить сущность, созданную другим контекстом LINQ to SQL - PullRequest
0 голосов
/ 08 марта 2010

Почему это продолжает беспокоить меня весь день.

У меня есть сущность с несколькими ссылками, из которой я получаю контекст, который затем удаляю. Сделайте некоторые изменения и попробуйте SubmitChanges (). В то время как вызов SubmitChanges () без .Attach (), кажется, просто ничего не делает. При использовании .Attach () я получаю исключение:

Была сделана попытка присоединить или добавить объект, который не является новым, возможно, был загружен из другого DataContext. Это не поддерживается.

Есть идеи?

1 Ответ

3 голосов
/ 08 марта 2010

L2S очень требователен к обновлению сущности, пришедшей из другого контекста БД. На самом деле, вы не можете сделать это, если сначала не «отсоедините» его от контекста, из которого он произошел. Есть несколько разных способов отделить сущность. Один из них показан ниже. Этот код будет в вашем классе сущности.

public virtual void Detach()
{
    PropertyChanging = null;
    PropertyChanged = null;
}

В дополнение к этому вы также можете сериализовать вашу сущность, используя сериализацию на основе WCF. Примерно так:

    object ICloneable.Clone()
    {
        var serializer = new DataContractSerializer(GetType());
        using (var ms = new System.IO.MemoryStream())
        {
            serializer.WriteObject(ms, this);
            ms.Position = 0;
            return serializer.ReadObject(ms);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...