سلام یک سوال داشتم یک دیتابیس دارم که اطلاعاتشو در دیتاگرید نشون میدم. کلاس جدولم اینطوریه

   public class Contacts : INotifyPropertyChanged
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity )]
public int id { get; set; }

private string _firstName;
private string _lastName;
public string FirstName
{
set
{
_firstName = value;
if (PropertyChanged == null) return;
onPropertyChanged("FirstName");
}
get { return _firstName; }
}
public string LastName
{
set
{
_lastName = value;
if (PropertyChanged == null) return;
onPropertyChanged("LastName");
}
get { return _lastName; }
}

public event PropertyChangedEventHandler PropertyChanged;

private void onPropertyChanged(string propertyName)
{
if (PropertyChanged == null) return;
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}


داخل فرم هم اینطوری در دیتاگرید استفاده میکنم
public ObservableCollection<Contacts> contacts { get; set; }



DbMainContext db = new DbMainContext();


contacts = new ObservableCollection<Contacts>(db.Contacts.ToList( ));
dataGrid_1.ItemsSource = contacts;


دیتاگریدم رو بصورت دستی وقتی داخل سطرها و سلول هاش تغییری در مقدارشون میدم اینطوری اونو ذخیره میکنم و در دیتابیسم ذخیره میشه

 db.SaveChanges();



الان دیتاگریدم درحالت CanUserAddRows="True" هست و وقتی با کلیک روی دیتاگرید سطر جدید اضافه میشه بعد سلول های سطر جدید را داخلش مقداری مینویسم میخوام این سطر هم در دیتاگریدم ذخیره بشه ولی db.SaveChanges هیچی ذخیره نمیشه.باید چیکار کنم تا بتونم این رو حل کنم ؟