Entity Framework Core是一个基于.NET Core的ORM框架,用于将对象表示转换为数据库中的数据。它提供了一组API,使得开发人员可以使用面向对象的方式来对关系数据库进行操作。
场景:当你需要创建一个新的实体对象,并且不打算将其与数据库关联时,可以使用未跟踪状态。
var newEntity = new Entity { Name = "New Entity" };// 此时newEntity处于Detached状态
场景:当你查询数据库并获取一个实体对象时,该对象的属性与数据库中的数据一致,且不需要进行任何修改时,可以使用未修改状态。
var entity = dbContext.Entities.FirstOrDefault(e => e.Id == entityId);// 此时entity处于Unchanged状态
场景:当你想要将一个新创建的实体对象保存到数据库时,可以使用新增状态。
var newEntity = new Entity { Name = "New Entity" };
dbContext.Entities.Add(newEntity);// 现在newEntity处于Added状态
场景:当你需要修改实体对象的属性,并将这些更改保存到数据库时,可以使用已修改状态。
var entity = dbContext.Entities.FirstOrDefault(e => e.Id == entityId);
entity.Name = "Updated Name";// 此时entity处于Modified状态
场景:当你想要从数据库中删除一个实体对象时,可以使用已删除状态。
var entity = dbContext.Entities.FirstOrDefault(e => e.Id == entityId);
dbContext.Entities.Remove(entity);// 现在entity处于Deleted状态
安装Entity Framework Core NuGet包:
Install-Package Microsoft.EntityFrameworkCore
创建一个数据库上下文类,并在该类中定义要映射到数据库的实体:
using Microsoft.EntityFrameworkCore;
public class MyDbContext : DbContext
{
public DbSet<Entity> Entities { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//连接自己数据库
optionsBuilder.UseSqlServer("Data Source=(local);Initial Catalog=MyDatabase;Integrated Security=True");
}
}
创建实体Entity
public class Entity
{
public int Id { get; set; }
public string Name { get; set; }
}
使用数据库上下文类来执行数据操作:
using (var dbContext = new MyDbContext())
{
// 新增一个实体对象
dbContext.Entities.Add(new Entity { Name = "New Entity" });
// 查询所有实体对象
var entities = dbContext.Entities.ToList();
// 修改一个实体对象
var entity = dbContext.Entities.FirstOrDefault(e => e.Id == entityId);
entity.Name = "Updated Name";
// 删除一个实体对象
var entityToRemove = dbContext.Entities.FirstOrDefault(e => e.Id == entityId);
dbContext.Entities.Remove(entityToRemove);
// 将所有更改保存到数据库
dbContext.SaveChanges();
}