My .saveChanges() method is not saving because it is saying an object reference is required for the non-static field, method, or property

I am getting an error when I call the .SaveChanges(). It is telling me an object reference is required for the non-static field, method, or property 'SongDatabase.Songs'. Here is my code for my controller. Can someone tell me why this error is occurring?

[HttpPost]
    public ActionResult Add(Song song)
    {
        using (SongDatabase db = new SongDatabase())
        {
            SongDatabase.Songs.Add(song);
            SongDatabase.SaveChanges();
        }

        return RedirectToAction("Music");
    }

Here is my code for my database for the songs.

public class SongDatabase : DbContext
{
    public DbSet<Song> Songs { get; set; }
    public DbSet<Artist> Artists { get; set; }
    public DbSet<Album> Albums { get; set; }

    public SongDatabase()
    {
        Database.SetInitializer(new DropCreateDatabaseIfModelChanges<SongDatabase>());
    }
}

And lastly, here is the code for my Song class.

public class Song
{
    public Song()
    {
        Album = new List<Album>();
    }

    /// <summary>
    ///  The Id of the song.
    /// </summary>
    public int SongId { get; set; }

    /// <summary>
    ///  The name of the song.
    /// </summary>
    public string SongName { get; set; }

    /// <summary>
    /// The artist of the song.
    /// </summary>
    public int ArtistId { get; set; }

    /// <summary>
    ///  The duration of the song.
    /// </summary>
    public double Duration { get; set; }

    /// <summary>
    ///  Whether or not this song should be excluded when calculating the total duration of the current playlist. 
    /// </summary>
    public bool Exclude { get; set; }

    /// <summary>
    /// Navigation property linking the album class to the song class.
    /// </summary>
    public virtual ICollection<Album> Album { get; set; }

    /// <summary>
    /// Navigation property linking the artist class to the song class.
    /// </summary>
    public virtual Artist Artist { get; set; }
}


ANSWERS:


You're trying to access public DbSet<Song> Songs { get; set; } as a static value, in your code here

[HttpPost]
public ActionResult Add(Song song)
{
    using (SongDatabase db = new SongDatabase())
    {
        SongDatabase.Songs.Add(song);
        SongDatabase.SaveChanges();
    }

    return RedirectToAction("Music");
}

You create an instance of SongDatabase with SongDatabase db = new SongDatabase() but you're not using that instance db. You should change it for

[HttpPost]
public ActionResult Add(Song song)
{
    using (SongDatabase db = new SongDatabase())
    {
        db.Songs.Add(song);
        db.SaveChanges();
    }

    return RedirectToAction("Music");
}


 MORE:


 ? AutoMapper non-static conversion from static - MapperConfiguration, CreateMapper
 ? How to WriteLine 2 million records in under 3 seconds?
 ? Error: Getting "non-static variable ... cannot be referenced" when trying to fill and array with random numbers
 ? non-static variable deck cannot be referenced from a static context
 ? Difference between Static methods and Instance methods
 ? C++ Overload Static Function with Non-Static Function
 ? What does "operator = must be a non-static member" mean?
 ? C# error : An object reference is required for the non-static field, method, or property
 ? What is the difference between static methods in a Non static class and static methods in a static class?
 ? how to pass a non static-member function as a callback?