【发布时间】:2018-09-05 12:57:40
【问题描述】:
我将所有 DBContext 调用移到了存储库中。
public class PayAllowanceRepository
{
private static DBEntities _dbContext = new DBEntities();
public static void AddAllowance(Allowance payAllowance)
{
_dbContext.Allowances.Add(payAllowance);
_dbContext.SaveChanges();
}
public static void AddAllowanceAccumulators(List<Allowance> allowanceList)
{
_dbContext = new DBEntities();
_dbContext.Allowances.AddRange(allowanceList);
allowanceList.ForEach(p => _dbContext.Entry(p).State = System.Data.Entity.EntityState.Modified);
_dbContext.SaveChanges();
}
// Here
public static void AddAllowanceAccumulatorsHours(List<Allowance> allowanceListHours)
{
_dbContext = new DBEntities();
_dbContext.Allowances.AddRange(allowanceListHours);
allowanceListHours.ForEach(x => _dbContext.Entry(x).State = System.Data.Entity.EntityState.Modified);
_dbContext.SaveChanges();
}
public static void UpdateAllowance(Allowance payAllowance)
{
_dbContext=new DBEntities();
_dbContext.Entry(payAllowance).State = System.Data.Entity.EntityState.Modified;
_dbContext.SaveChanges();
}
public static void DeleteAllowance(Guid id)
{
var allowance = _dbContext.Allowances.FirstOrDefault(x => x.Id == id);
_dbContext.Allowances.Remove(allowance);
_dbContext.SaveChanges();
}
public static void UpdateAllowanceRate(Allowance allowanceRate)
{
//dbContext.Allowances.Add(allowanceRate);
_dbContext.Entry(allowanceRate).State = System.Data.Entity.EntityState.Modified;
_dbContext.SaveChanges();
}
public static List<Allowance> GetAllowances(Guid payrollCompanyId)
{
var allowance = new List<Allowance>(_dbContext.Allowances.AsNoTracking().Where(x => x.PayrollCompanyId == payrollCompanyId));
return allowance;
}
}
- 这是处理存储库中 DBContext 的最佳方式吗?
- 执行 AddAllowanceAccumulatorsHours 时失败。我收到错误消息:IEntityChangeTracker 的多个实例无法引用实体对象。我做错了什么?
【问题讨论】:
标签: c# entity-framework-6 3-tier