У меня есть приложение WPF, в котором у меня есть две сетки данных. Первый показывает Альбомы, а второй - соответствующие Песни, основываясь на выборе в первой сетке данных. Я также могу добавить альбом, который затем сохраняется в базе данных. Теперь я хочу выбрать альбом в первой сетке данных и добавить песню в этот альбом во второй сетке данных. Все песни имеют AlbumID в качестве внешнего ключа в моей базе данных. Я не знаю, как обрабатывать этот параметр AlbumID при добавлении песни в базу данных, мой запрос вылетает, как и ожидалось. Я хотел бы знать, как я могу сказать SongViewModel добавить песню с AlbumID, заданным SelectedAlbum.
Запрос на добавление альбома:
public AlbumData AddAlbumEntry(AlbumData albumData)
{
album albumEntry = new album
{
AlbumName = albumData.AlbumName,
Year = albumData.AlbumYear,
};
_context.albums.Add(albumEntry);
_context.SaveChanges();
return new AlbumData
{
AlbumID = albumEntry.AlbumID,
AlbumYear = albumEntry.Year,
AlbumName = albumEntry.AlbumName,
};
}
Запрос на добавление песни:
public SongData AddSongEntry(SongData songData)
{
song songEntry = new song
{
SongName = songData.SongName,
SongNumber = songData.SongNumber,
};
_context.songs.Add(songEntry);
_context.SaveChanges();
return new SongData
{
SongID = songEntry.SongID,
SongNumber = songEntry.SongNumber,
SongName = songEntry.SongName,
};
}
AlbumViewModel для подключения к представлению:
public AlbumData AddAlbumEntry(AlbumData albumData)
{
var controller = new BandManagerController();
return controller.AddAlbumEntry(albumData);
}
public void AlbumToDatabase(AlbumData data)
{
AddAlbumEntry(data);
ExecuteCancelCommand();
}
SongViewModel для подключения к просмотру:
public SongData AddSongEntry(SongData songData)
{
var controller = new BandManagerController();
return controller.AddSongEntry(songData);
}
public void SongToDatabase(SongData data)
{
AddSongEntry(data);
ExecuteCancelCommand();
}
У меня также есть свойство SelectedAlbum для заполнения SongLists:
public AlbumViewModel SelectedAlbum
{
get
{
return _selectedAlbum;
}
set
{
if (_selectedAlbum != value)
{
_selectedAlbum = value;
}
NotifyPropertyChanged("SelectedAlbum");
}
}