0

взглянуть на сверху 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

Вы правы, для наборов свойств навигации нет такого метода. Вы можете посмотреть этот пост http://stackoverflow.com/questions/39708439/ef-create-remove-relation-from-many-to-many-relations-when-autodetectchangesen, не уверен, применим ли он к вашему делу. –

+0

Attach не входит в Entity 6.1.3, он был удален в некоторых предыдущих версиях –

+0

Я понял, что первый ответ на странице с вопросом, который я связал, не был правильным для EF 6.1.3; второй ответ (один по dannie.f) является правильным. Вам необходимо создать отдельный экземпляр первого объекта, добавить второй объект в свою коллекцию nav-prop, Прикрепить (не привязанный) первый объект, а затем выполнить удаление. –

ответ

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()