Проблема присоединения объекта в LINQ к SQL - PullRequest
2 голосов
/ 05 февраля 2009

Я пытаюсь прикрепить объект в LINQ к SQL, но он выдает следующее исключениеL:

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

<Table Name="dbo.Products" Member="Products">
    <Type Name="Product">
      <Column Name="Id" Type="System.Int64" DbType="BigInt NOT NULL IDENTITY" IsReadOnly="true" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
      <Column Name="Name" Type="System.String" DbType="NVarChar(MAX) NOT NULL" CanBeNull="false" />    
      <Column Name="IsDeleted" Type="System.Boolean" DbType="Bit NOT NULL" CanBeNull="false" />
      <Column Name="Timestamp" Type="System.Data.Linq.Binary" DbType="timestamp NOT NULL" CanBeNull="false" IsVersion="true" />
      {...SOME ASSOCIATIONS....}
    </Type>
</Table>

Код, который я использую для прикрепления объекта:

var context = new MyDataContext();
context.Products.Attach(entity, true);

Есть идеи, почему я получаю эту ошибку? Спасибо

Ответы [ 3 ]

2 голосов
/ 05 февраля 2009

Вы можете прикрепить объект к DataContext, отличному от того, из которого он был создан, только если он был сначала сериализован и десериализован (скажем, отправив его клиенту и вернув его).

См. здесь , чтобы узнать больше

1 голос
/ 05 мая 2009

PLINQO реализует автоматическое отключение функций на ваших объектах, а также множество других функций и улучшений. Если вы заинтересованы, проверьте http://www.plinqo.com

1 голос
/ 05 февраля 2009

Полагаю, вы столкнулись с этой проблемой, потому что пытаетесь использовать LINQ2SQL в n-уровневой среде, возможно, с ASP.NET, чтобы старый контекст больше не существовал, когда вы пытаетесь зафиксировать изменения в базе данных?

У меня были точно такие же проблемы, и я решил их, написав общую реализацию репозитория для уровня данных. Он решает все проблемы отсоединения / присоединения сущностей и даже поддерживает обновление и удаление отсоединенных сущностей деревьев и может помочь вам написать слой данных с меньшими усилиями. Более подробное описание и исходный код вы можете найти здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...