Я получаю System.NotSupportedException: An attempt has been made to Attach or Add an entity that is not new perhaps having been loaded from another DataContext
, когда хочу обновить объект с дочерними объектами.
Сценарий таков:
У меня есть SubscriberProvider, который позволяет мне создавать подписчиков.
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);
На обычной странице подписки это работает нормально.
Теперь у меня есть класс Member linq2sql (извлекаемый из MemberRepository), и я хочу расширить его, чтобы иметь вспомогательный метод подписки, например:
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
Исключение возникает, когда SubscriberProvider пытается добавить интересы участника.
Комментируя
newSubscriber.Interests.Add(new Interest{
Id=1,
Name="cars"
});
сделает участника. Subscribe () работает.
member.Subscribe () это просто:
public void Subscribe(bool emailIsVerified, bool receiveEmails, bool sendDoubleOptIn)
{
var provider = new MailingListProvider();
provider.Subscribe(EmailAddress, emailIsVerified, receiveEmails, CountryId, sendDoubleOptIn, ConvertInterests(MemberInterests.ToList()));
}
Так, что заставляет дочерние сущности (Интересы) терять их текстовые данные, когда я делаю member.Subscribe () и как мне исправить это?