public async Task UpsertAsync(MusicRecordingDTO work) { var originalWork = await FindAsync(work.Address).ConfigureAwait(false); if (originalWork != null) { //Because we don't have ids that relates to OtherArtists we are just dumping the original ones and adding new ones foreach (var otherArtist in originalWork.OtherArtists) { otherArtist.ObjectState = ObjectState.Deleted; //work.OtherArtists.Add(otherArtist); } //Then we do a map to reflect the changes //We may consider a DTO then map and update the graph Mapper.Map(work, originalWork); originalWork.ObjectState = ObjectState.Modified; _unitOfWork.RepositoryAsync <MusicRecording>().InsertOrUpdateGraph(originalWork); } else { var newWork = new MusicRecording(); Mapper.Map(work, newWork); _unitOfWork.RepositoryAsync <MusicRecording>().InsertOrUpdateGraph(newWork); } await _unitOfWork.SaveChangesAsync().ConfigureAwait(false); }
public void ShouldBeAbleToMapDTOToModel() { MappingBootstrapper.Initialise(); Mapper.AssertConfigurationIsValid(); var address = "XXXX"; var musicRecording = new MusicRecordingDTO(); musicRecording.Address = address; musicRecording.Name = "my great track"; var musicRecordingModel = new MusicRecording(); Mapper.Map(musicRecording, musicRecordingModel); Assert.Equal(musicRecordingModel.Address, address); }
public void ShouldBeAbleToMapOtherArtitsDTOToModel() { MappingBootstrapper.Initialise(); Mapper.AssertConfigurationIsValid(); var address = "XXXX"; var otherArtitsAddress = "ArtistXXXXX"; var musicRecording = new MusicRecordingDTO(); musicRecording.Address = address; musicRecording.OtherArtists.Add(new CreativeWorkArtistDTO() { ArtistAddres = otherArtitsAddress }); var musicRecordingModel = new MusicRecording(); Mapper.Map(musicRecording, musicRecordingModel); Assert.Equal(musicRecordingModel.Address, address); Assert.Equal(musicRecordingModel.OtherArtists.First().ArtistAddres, otherArtitsAddress); }
/// <summary> /// MusicRecordingOrItemList as a MusicRecording. /// </summary> /// <param name="musicRecording">MusicRecordingOrItemList as a MusicRecording.</param> public MusicRecordingOrItemList(MusicRecording musicRecording) { AsMusicRecording = musicRecording; }
static void Main(string[] args) { using (var db = new UjoContext()) { System.Console.Write("Enter a name for a new Artist: "); var name = System.Console.ReadLine(); var artist = new Artist() { Name = name, Address = "XXX" + name }; db.Artists.AddOrUpdate(artist); db.SaveChanges(); var musicRecording = new MusicRecording() { Address = "xxxRec" + name, Genre = "Monkey Techno", Name = "Pooping head2", ByArtistAddress = "XXX" + name }; musicRecording.OtherArtists.Add( new CreativeWorkArtist() { ContributionType = "Featured2", Role = "Guitar", NonRegisteredArtistName = "Simon", CreativeWorkAddress = musicRecording.Address }); db.MusicRecordings.AddOrUpdate(musicRecording); db.CreativeWorkArtists.AddOrUpdate(musicRecording.OtherArtists.First()); var creativeWorkArtist = new CreativeWorkArtist() { ContributionType = "Featured", NonRegisteredArtistName = "Ujo", CreativeWorkAddress = "xxxRec" + name }; db.CreativeWorkArtists.AddOrUpdate(creativeWorkArtist); db.SaveChanges(); // Display all Blogs from the database var query = from b in db.Artists orderby b.Name select b; System.Console.WriteLine("All artists in the database:"); foreach (var item in query) { System.Console.WriteLine(item.Name); } System.Console.WriteLine("Press any key to exit..."); System.Console.ReadKey(); } }