Ответ 1
Чтобы обновить сущность с помощью Entity Framework Core, это логический процесс:
- Создать экземпляр для класса
DbContext
- Получить объект по ключу
- Внести изменения в свойствах объекта
- Сохранить изменения
Метод Update()
в DbContext
:
Начинает отслеживать заданную сущность в измененном состоянии, так что она будет обновляться в базе данных при
SaveChanges()
.
Метод обновления не сохраняет изменения в базе данных; вместо этого он устанавливает состояния для записей в экземпляре DbContext.
Итак, мы можем вызвать метод Update()
перед тем, как сохранить изменения в базе данных.
Я возьму некоторые определения объектов, чтобы ответить на ваш вопрос:
-
База данных называется Store
-
Название таблицы - Продукт
Определение класса продукта:
public class Product
{
public int? ProductID { get; set; }
public string ProductName { get; set; }
public string Description { get; set; }
public decimal? UnitPrice { get; set; }
}
Определение класса DbContext:
public class StoreDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Your Connection String");
base.OnConfiguring(optionsBuilder);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Order>(entity =>
{
// Set key for entity
entity.HasKey(p => p.ProductID);
});
base.OnModelCreating(modelBuilder);
}
}
Логика для обновления сущности:
using (var context = new StoreDbContext())
{
// Retrieve entity by id
// Answer for question #1
var entity = context.Products.FirstOrDefault(item => item.ProductID == id);
// Validate entity is not null
if (entity != null)
{
// Answer for question #2
// Make changes on entity
entity.UnitPrice = 49.99m;
entity.Description = "Collector edition";
// Update entity in DbSet
context.Products.Update(entity);
// Save changes in database
context.SaveChanges();
}
}
Пожалуйста, дайте мне знать, если это полезно