我正在尝试使用通用存储库模式从数据库中删除 Employee 实体,该数据库包含不同的表,例如 Employee、Project、Skills。
namespace Information.Repository
{
public class IRepositoy<TEntity> : IRepository<TEntity> where TEntity : class
{
private readonly ApplicationDbContext _dbContext;
public IRepositoy(ApplicationDbContext dbContext)
{
_dbContext = dbContext;
}
public void Remove(int id)
{
TEntity element = _dbContext.Set<TEntity>().Find(id);
_dbContext.Set<TEntity>().Remove(element);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当上面的Remove方法被调用时,它会进行两次数据库调用
一种用于获取实体。
第二个用于删除它。
我发现像下面这样的查询,当实体类型(员工或项目或技能)已知时,该查询使用单个 SQL 查询执行
public void Remove(int id)
{
Employee employee = new Employee { EmployeeId = id };
_dbContext.Entry(employee).State = EntityState.Deleted;
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议我如何删除实体而不使用类似于上面示例的通用存储库模式来获取它。