Witam.

Mam problem z którym nie wiem jak mam sobie poradzić.

Mam klasę NowaFakturaViewModel :
Komentarz odnosnie problemu w kodzie

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Magazyn.Model.Entities;
using Magazyn.Model.EntitiesForAllView;
using Magazyn.Helper;
using System.Windows.Input;
using GalaSoft.MvvmLight.Messaging;
using Magazyn.Views;
using System.Collections.ObjectModel;

namespace Magazyn.ViewModels.HandelTabViewModels
{
    public class NowaFakturaViewModel : DodajWszystkieViewModel<PozycjeDokumentuForAllView>
    {
        #region Constructor
        public NowaFakturaViewModel()
            : base()
        {
            base.DisplayName = "Nowa Faktura";
            dokument = new Dokumenty();
            adres = new Adresy();
            kontrahent = new Kontrahenci();
            modyfikacja = false;
            Messenger.Default.Register<DokumentyForAllView>(this, modyfikuj);
            Messenger.Default.Register<PozycjeDokumentow>(this, addPozycjeFaktury);
            Messenger.Default.Register<KontrahenciForAllView>(this, getWybranyKontrahentNabywca);
            this.NumerDokumentu = "FA" + DateTime.Now.Day + DateTime.Now.Month + DateTime.Now.Year + DateTime.Now.Hour + DateTime.Now.Minute;
            this.DataWystawienia = DateTime.Now;
            
        }
        #endregion // Constructor
        #region Fields
        private bool modyfikacja;
        protected Dokumenty dokument;
        protected Adresy adres;
        protected Kontrahenci kontrahent;
        private BaseCommand _KontrahenciCommand;
        private BaseCommand _GrupyCommand;
        private BaseCommand _PlatnosciCommand;
        private BaseCommand _TypyDokumentowCommand;
        private BaseCommand _DeletePozycjeCommand;
        private PozycjeDokumentuForAllView _WybranaPozycja;
        public PozycjeDokumentuForAllView WybranaPozycja
        {
            get
            {
                return _WybranaPozycja;
            }
            set
            {
                if (_WybranaPozycja != value)
                {
                    _WybranaPozycja = value;
                }
            }
        }
        #endregion //Fiends
        #region Properties
           // Wyciąłem gdyż jest i dość sporo a nie są istotne teraz według mnie
        #endregion // Properties
        #region ComboBoxItems
            // Wyciąłem gdyż jest i dość sporo a nie są istotne teraz według mnie
        #endregion //ComboBoxItems
        #region Commands
        // Wyciąłem gdyż jest i dość sporo a nie są istotne teraz według mnie
        #endregion // Commands
        #region Helpers
        public void DeletePozycje()
        {
            PozycjeDokumentuForAllView pozycja = _WybranaPozycja;            
            
            PozycjeDokumentow poz = (
                    from dok in magazynEntities.PozycjeDokumentow
                    where dok.id == WybranaPozycja.Id
                    select dok
                    ).FirstOrDefault();
            poz.idStatusu = 2;
            magazynEntities.SaveChanges();
            List.Remove(pozycja);
        }
        public virtual void addPozycjeFaktury(PozycjeDokumentow pozycjaDokumentu)
        {
            pozycjaDokumentu.idStatusu = 1;
            magazynEntities.PozycjeDokumentow.AddObject(pozycjaDokumentu);
            dokument.PozycjeDokumentow.Add(pozycjaDokumentu);
            List.Add
            (
                new PozycjeDokumentuForAllView
                {
                    Id = pozycjaDokumentu.id,
                    TowarKod = pozycjaDokumentu.Towary.kod,
                    TowarNazwa = pozycjaDokumentu.Towary.nazwa,
                    Cena = pozycjaDokumentu.cena,
                    Ilosc = pozycjaDokumentu.ilosc,
                    Rabat = pozycjaDokumentu.rabat
                }
            );
        }
        public override void LoadList()
        {
            List = new ObservableCollection<PozycjeDokumentuForAllView>
            (
                from  pozDok in dokument.PozycjeDokumentow
                where pozDok.idStatusu == 1
                select new PozycjeDokumentuForAllView
                {
                    Id = pozDok.id,
                    TowarKod = pozDok.Towary.kod,
                    TowarNazwa = pozDok.Towary.nazwa,
                    Cena = pozDok.cena,
                    Ilosc = pozDok.ilosc,
                    Rabat = pozDok.rabat                    
                }
            );
            OnPropertyChanged(() => List);
        }
        public override void Save()
        {
            if (!this.modyfikacja)
            {
                dokument.idStatusu = 1;
                dokument.idTypuDokumentu = 1;
                magazynEntities.AddToDokumenty(dokument);
/* PROBLEM!
Wysyłam obiekt dokument który zawiera wszystkie powiązania do okna głównego który na tą wiadomość reaguje  następująco otwiera nowe okno które jest Wydaniem Zewnętrznym i okno uzupełnia sie atomatycznie danymi z Faktury
wraz z polami czyli towarami jakie sa na fakturze ale po kliknieciu zapisz WZ lub probie dodanai jeszcze jednego towaru do WZ poza tymi z faktury program się wysypuje.
*/                
                Messenger.Default.Send<Dokumenty>(dokument);
            }
            magazynEntities.SaveChanges();
        }
        ...
    }
}

Klasa Wydania Zewnetrznego dziedziczy po NowaFakturaViewModel

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Magazyn.Model.Entities;
using Magazyn.Model.EntitiesForAllView;

namespace Magazyn.ViewModels.HandelTabViewModels
{
    class NoweWydanieZewnetrzneViewModel : NowaFakturaViewModel
    {
        #region Constructor
        public NoweWydanieZewnetrzneViewModel()
            : base()
        {
            base.DisplayName = "Nowa WZ";
        }
        public NoweWydanieZewnetrzneViewModel(Dokumenty a)
            : base()
        {            
            base.DisplayName = "Nowa WZ";
            IdTypuDokumentu = 2;
            dokument = a;
            dokument.idTypuDokumentu = 2;
            dokument.dataWystawienia = DateTime.Now;
            dokument.numerDokumentu = "123321";
        }
        #endregion // Constructor        
        #region Helpers
        public override void Save()
        {
            dokument.idStatusu = 1;
            magazynEntities.AddToDokumenty(dokument);
            magazynEntities.SaveChanges();
        }
        public override void addPozycjeFaktury(PozycjeDokumentow pozycjaDokumentu)
        {
            //dodajemy pozycję do bazy
            pozycjaDokumentu.idStatusu = 1;
            magazynEntities.PozycjeDokumentow.AddObject(pozycjaDokumentu);
            //kojarzymy pozycję faktury z fakturą w której jesteśmy
            dokument.PozycjeDokumentow.Add(pozycjaDokumentu);
            //dodajemy pozycję do wyświetlanej listy
            List.Add
            (
                new PozycjeDokumentuForAllView
                {
                    Id = pozycjaDokumentu.id,
                    TowarKod = pozycjaDokumentu.Towary.kod,
                    TowarNazwa = pozycjaDokumentu.Towary.nazwa,
                    Cena = pozycjaDokumentu.cena,
                    Ilosc = pozycjaDokumentu.ilosc,
                    Rabat = pozycjaDokumentu.rabat
                }
            );
        }
        #endregion // Helpers
    }
} 

Błędy jakie wyrzuca Visual:

Komunikat:
Do obiektu jednostki nie może odwoływać się wiele wystąpień interfejsu IEntityChangeTracker.
Do kodu wygenerowanego przez Visual za pomoca entities:

public void AddToDokumenty(Dokumenty dokumenty)
        {
            base.AddObject("Dokumenty", dokumenty);
        }