Большинство операций с данными представляют собой CRUD-операции (Create, Read, Update, Delete), то есть получение данных, создание, обновление и удаление. Entity Framework позволяет легко производить данные операции.
Для примера используется следующие модель и контекст данных:
public class Phone
{
public int Id { get; set; }
public string Name { get; set; }
public int Price { get; set; }
}
public class PhoneContext : DbContext
{
public DbSet
Phones { get; set; }
...
}
Добавление
using (PhoneContext db = new PhoneContext()) {
Phone p1 = new Phone { Name = "Samsung Galaxy S7", Price = 20000 };
Phone p2 = new Phone { Name = "iPhone 7", Price = 28000 };
// добавление
db.Phones.Add(p1);
db.Phones.Add(p2);
db.SaveChanges(); // сохранение изменений
var phones = db.Phones.ToList();
foreach (var p in phones)
Console.WriteLine("{0} - {1} - {2}", p.Id, p.Name, p.Price);
}
Изменение
Однако, если объект получен в одном контексте, а изменения следует сохранить во втором, тогда необходимо явным образом установить для его состояния значение EntityState.Modified:
using (PhoneContext db = new PhoneContext()) {
// получаем первый объект
Phone p1 = db.Phones.FirstOrDefault();
p1.Price = 30000;
db.SaveChanges(); // сохраняем изменения
}
using (PhoneContext db = new PhoneContext()) {
if (p1 != null) {
p1.Price = 60000;
db.Entry(p1).State = EntityState.Modified;
db.SaveChanges();
}
}
using (PhoneContext db = new PhoneContext()) {
Phone p1 = db.Phones.FirstOrDefault();
if (p1 != null) {
db.Phones.Remove(p1);
db.SaveChanges();
}
}
using (PhoneContext db = new PhoneContext()) {
if (p1 != null) {
db.Entry(p1).State = EntityState.Deleted;
db.SaveChanges();
}
}