взглянуть на сверху 2 ответа на вопрос "How to delete many-to-many relationship in Entity Framework without loading all of the data" (см статью) наводит на мысль о том, что Приложить метод существует для коллекций навигационно-собственности (т.е. entity1 .Entity2Collection.Attach (entity2)). Проблема в том, что у меня есть VS 2015/EF 6.1.3 (VB и DBContext), и этот метод, похоже, не существует для коллекций навигационных свойств (или, по крайней мере, Intellisense не показывает его). Я делаю что-то неправильно?«Attach», кажется, не будут доступны для коллекций навигационно-собственности
0
A
ответ
0
Dannie раствор (перекодируются для VB) F выглядит следующим образом, предполагая, что модель TopicDBEntities и сущности-коллекции Темы и подписки:.
Dim db = New TopicDBEntities() ' Create UNATTACHED instances of the two entities and associate them ' (In real life, you would have something more sophisticated for the ' next 2 lines) Dim topic = New Topic { .TopicId = 1 } Dim subscription = New Subscription { .SubscriptionId = 2} topic.Subscriptions.Add(subscription) ' Attach the topic and subscription as unchanged ' so that they will not be added to the db ' but start tracking changes to the entities db.Topics.Attach(topic) ' Remove the subscription ' EF will know that the subscription should be removed from the topic topic.subscriptions.Remove(subscription) ' commit the changes db.SaveChanges()
Вы правы, для наборов свойств навигации нет такого метода. Вы можете посмотреть этот пост http://stackoverflow.com/questions/39708439/ef-create-remove-relation-from-many-to-many-relations-when-autodetectchangesen, не уверен, применим ли он к вашему делу. –
Attach не входит в Entity 6.1.3, он был удален в некоторых предыдущих версиях –
Я понял, что первый ответ на странице с вопросом, который я связал, не был правильным для EF 6.1.3; второй ответ (один по dannie.f) является правильным. Вам необходимо создать отдельный экземпляр первого объекта, добавить второй объект в свою коллекцию nav-prop, Прикрепить (не привязанный) первый объект, а затем выполнить удаление. –