2014-09-23 2 views
0

У меня есть элемент, и одно из его свойств - это страна, которая является объектом, я думал, что смогу выполнить приведенный ниже код.Вложения Entity Framework вместо обновления

var Post = new Post(); 

country = simpleRepository.GetCountries().FirstOrDefault(c => c.CountryId == postViewModel.PostAddress.CountryId); 

post.PostAddress.Country = country; 

allThingsEntities.Posts.Add(post); 

К сожалению, я получаю эту ошибку, когда я делаю:

Объект объект не может ссылаться несколько экземпляров IEntityChangeTracker

И когда я изменяю post.PostAddress.Country = country; к post.PostAddress.CountryId = country.countryId система бросает потому что он пытается создать новую страну.

+0

Не могли бы вы показать нам классы 'Post' и' PostAddress'? –

+0

Что такое 'GetCountries()' делать? Можно это увидеть? – Thewads

+1

Кажется, что simpleRepository и allThinsEntities используют разные DbContexts/ObjectContexts. Вы получаете свою страну из одного контекста и пытаетесь добавить ее в другую. Сначала вы должны отсоединить страну от контекста simpleRepsitorys, а затем присоединить ее к allThingsEntities, а затем назначить ее PostAddress.Country. – user3411327

ответ

0

Эта ошибка означает, что у вас есть несколько экземпляров контекста данных. Вы можете сделать что-то вроде этого, чтобы поддерживать только один экземпляр. Возьмите это с вашего репозитория.

public DataContext Get() 
{ 
    return _dataContext ?? (dataContext = new DataContext()); 
} 
Смежные вопросы