Witam ponownie. Proszę wybaczyć za niejasną nazwę tematu, ale ciężko to ująć w kilku słowach.
Mam powiedzmy tabelę klienci oraz tabelę województwa. Kiedy dodaję klienta, wybieram z listy województwo i dodaję do bazy klienta i w polu VoivodeshipId powinno być id województwa. Ale tylko w teorii. W praktyce jest tak, że jeśli wybiorę z listy przy dodawaniu Mazowieckie, to klient doda się z Mazowieckim, ale województwo mazowieckie również doda się jako kolejne do tabeli. Czy to jest normalne?
We ViewModelu mam dodawanie klienta prosto:
private void ExecuteSaveClient(Window window)
{
Client.CreatedDate = DateTime.Now;
clientService.AddClient(Client);
eventAggregator.GetEvent<ClientAddedEvent>().Publish("Klient został dodany");
window.Close();
}
W xamlu mam tak:
<ComboBox HorizontalAlignment="Left" Height="23" Margin="115,383,0,0" ItemsSource="{Binding Voivodeships}" DisplayMemberPath="Name" SelectedItem="{Binding Client.Voivodeship}" VerticalAlignment="Top" Width="185" SelectedIndex="0"/>
Czyli do klienta przypisuję cały obiekt typu województwo, z List<Voivodeship>, którą zainicjalizowałem w konstruktorze ViewModelu.
public class ClientDTO : IDataErrorInfo
{
public int Id { get; set; }
[.....]
public string Address1 { get; set; }
public string Address2 { get; set; }
public string PostalCode { get; set; }
public string PostCity { get; set; }
public string City { get; set; }
public string Community { get; set; }
public string County { get; set; }
public VoivodeshipDTO Voivodeship { get; set; }
public string PhoneNumber1 { get; set; }
public string PhoneNumber2 { get; set; }
public string Email { get; set; }
public string Comments { get; set; }
[.....]
}
I teraz tak, w ClientDTO mam dla województwa tylko obiekt typu VoivodeshipDTO, nie mam pola id dla województwa.
W serwisie mam:
public void AddClient(ClientDTO clientDto)
{
db.Clients.Add(Mapper.Map<ClientDTO, Client>(clientDto));
db.SaveChanges();
}
Mapowanie standardowe bez żadnego ręcznego definiowania.
I teraz tak, moje podejrzenia.
Jedną z moim zdaniem opcji może być to, że zapisuję do pola typu Client cały obiekt województwa, a nie samo Id. Nie wiem czy to jest normalnie, że tak by się działo, może jest normalne jeśli połączy się to z drugim podejrzeniem, mianowicie może chodzi o to, że listę województw pobieram serwisem VoivodeshipService, gdzie mam inną instancję db contextu niż w klasie, która zapisuje klienta.
Czy ktoś ma jakieś sugestie?