Из того, что я могу собрать, строка
Repository.Properties.AddObject(P);
пытается добавить объект P в текущий репозиторий, и, поскольку вы получили его из другого репозитория, вам необходимо сначала удалить его (или отсоединить) от другого репозитория.
РЕДАКТИРОВАТЬ: Итак, я предполагаю, что где-то в репозитории, есть обернутый DataContext (или, возможно, Repository наследует ваш DataContext. Когда вы получаете объект из DataContext, объект постоянно ссылается на трекер изменений, который отслеживает что нужно отправить обратно в базу данных, если вы обновите этот объект. Так как вы не хотите дважды считать какие-либо объекты, EF не позволяет вам присоединять этот объект к более чем одному контексту данных за раз. Для объекта в новом контексте данных вам необходимо отсоединить его от DataContext, который уже отслеживает его.
Для этого вам нужно вызвать метод Detach для объекта и любых объектов, на которые он ссылается, которые также отслеживаются EF. Хороший пример того, как это сделать, можно найти здесь: http://www.codeproject.com/KB/linq/linq-to-sql-detach.aspx