AlbumViewerBusiness.AlbumViewerDataImporter.ImportFromJson C# (CSharp) Method

ImportFromJson() public static method

Imports data from json
public static ImportFromJson ( AlbumViewerBusiness.AlbumViewerContext context, string json ) : int
context AlbumViewerBusiness.AlbumViewerContext
json string
return int
        public static int ImportFromJson(AlbumViewerContext context, string json)
        {
            // data exists
            if (context.Albums.Any())
                return 1;

            var albums = JsonConvert.DeserializeObject<Album[]>(json);

            foreach (var album in albums)
            {
                // clear out primary/identity keys so insert works
                album.Id = 0;
                album.ArtistId = 0;
                album.Artist.Id = 0;

                var existingArtist = context.Artists
                                            .FirstOrDefault(a => a.ArtistName == album.Artist.ArtistName);
                if (existingArtist == null)
                {
                    context.Artists.Add(album.Artist);
                }
                else
                {
                    album.Artist = existingArtist;
                    album.ArtistId = existingArtist.Id;
                }

                if (album.Tracks != null)
                {
                    foreach (var track in album.Tracks)
                    {
                        track.Id = 0;
                        context.Tracks.Add(track);
                    }
                }
                context.Albums.Add(album);

                try
                {
                    context.SaveChanges();
                }
                catch
                {
                    Console.WriteLine("Error adding: " + album.ArtistId);
                }
            }

            var user = new User()
            {
                Username = "test",
                Password = "test",
                Fullname = "Test User",
            };
            context.Users.Add(user);
            context.SaveChanges();

            return 1;
        }

Usage Example

Example #1
0
        /*
         *  To reset database:
         *  ----------------
         *  drop table users
         *  drop table tracks
         *  drop table albums
         *  drop table artists
         *  drop table __MigrationHistory
         */

        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        protected override void Seed(AlbumViewerContext context)
        {
            base.Seed(context);

            // serves as model warmup and db initialization
            if (!context.Users.Any())
            {
                string jsonFile = Path.Combine(App.Configuration.ApplicationRootPath, "data\\albums.js");
                string json     = File.ReadAllText(jsonFile);

                AlbumViewerDataImporter.ImportFromJson(context, json);
            }
        }
AlbumViewerDataImporter