/// <summary> /// This is the work for saving a PlaylistItem without the Transaction wrapper. /// </summary> private void DoSave(Playlist playlist) { foreach (PlaylistItem playlistItem in playlist.Items) { // This is a bit of a hack, but NHibernate pays attention to the "dirtyness" of immutable entities. // As such, if two PlaylistItems reference the same Video object -- NonUniqueObjectException is thrown even though no changes // can be persisted to the database. playlistItem.Video = VideoDao.Merge(playlistItem.Video); playlistItem.ValidateAndThrow(); playlistItem.Video.ValidateAndThrow(); } playlist.ValidateAndThrow(); PlaylistDao.Save(playlist); }