Je reçois System.NotSupportedException: An attempt has been made to Attach or Add an entity that is not new perhaps having been loaded from another DataContext
lorsque je souhaite mettre à jour un objet avec des entités enfants.Mise à jour de l'objet LINQ to SQL provoquant System.NotSupportedException
Le scénario est comme ceci:
J'ai un SubscriberProvider qui me permet de créer des abonnés.
var provider = new SubscriberProvider(); // Creates a new repository with own datacontext
var newSubscriber = new Subscriber
{
EmailAddress = emailAddress,
};
newSubscriber.Interests.Add(new Interest{
Id=1,
Name="cars"
});
provider.Subscribe(newSubscriber);
Sur une page d'inscription normale, cela fonctionne très bien.
Maintenant, j'ai une classe membre de linq2sql (récupérable par un MemberRepository) et je veux l'étendre à une aide méthode abonne comme ceci:
var repository = new MembershipRepository(); // Holds its own datacontext
var member = repository.Get("member1");
member.Subscribe(); // transfer member's info and interests to subscriber's table
L'exception se produit lorsque SubscriberProvider tente d'ajouter les intérêts de la membre. Commentant
newSubscriber.Interests.Add(new Interest{
Id=1,
Name="cars"
});
fera le travail member.Subscribe().
member.Subscribe() est simplement:
public void Subscribe(bool emailIsVerified, bool receiveEmails, bool sendDoubleOptIn)
{
var provider = new MailingListProvider();
provider.Subscribe(EmailAddress, emailIsVerified, receiveEmails, CountryId, sendDoubleOptIn, ConvertInterests(MemberInterests.ToList()));
}
Alors ce qui cause les entités enfants (intérêts) de perdre leur datacontext quand je fais member.Subscribe() et comment puis-je faire au sujet de la fixation de ce?
Afficher le code de 'member.Subscribe' –
ajouté comme demandé – zulkamal