【发布时间】:2022-01-29 23:05:47
【问题描述】:
您好,我是服务器和 REST API 的新手,我正在尝试从动态创建的表中提取数据,但数据与数据库中的数据不同步。 我有一个 sql 数据库,我从中提取了 asp.net web 项目中的实体数据库。
这是一个实体类的 GET 示例(存在于数据库中):
public class EmployeeBL
{
private FSProject1Entities db = new FSProject1Entities();
public List<Employee> GetEmployees(string fname, string lname, string depID)
{
return GetEmployeeSearchResult(fname, lname, depID);
}
}
这是我创建的类中的方法的示例,用于合并来自 2 个表的数据:
public class ShiftEmployeeDataBL
{
private FSProject1Entities db = new FSProject1Entities();
private List<ShiftEmployeeDataBL> GetEmployeeByShiftID(int id)
{
List<ShiftEmployeeDataBL> shiftEmpData = new List<ShiftEmployeeDataBL>();
foreach (Employee emp in db.Employee)
{//build list... }
return shiftEmpData;
}
我的问题是通过这个 GET 请求路径 (ShiftEmployeeData) 的 db.Employee 是旧数据,而通过 Employee GET 请求是好的数据(假设数据是通过 Employee 路径更新的)。
反之亦然 - 如果我通过 ShiftEmployeeData 类更新 Employee,它将显示为 ShiftEmployeeData 类的好数据,而不是为 Employee 更新。
我有两个类的 API 控制器。 怎么了?我觉得我错过了什么。 我尝试在浏览器中关闭缓存选项。
更新详细说明代码:
实体员工:
public partial class Employee
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int StartWorkYear { get; set; }
public int DepartmentID { get; set; }
}
员工更新(由 db 生成的实体模型代码自动生成):
public void UpdateEmployee(int id, Employee employee)
{
Employee emp= db.Employee.Where(x => x.ID == id).First();
emp.FirstName = employee.FirstName;
emp.LastName = employee.LastName;
emp.StartWorkYear = employee.StartWorkYear;
emp.DepartmentID = employee.DepartmentID;
db.SaveChanges();
}
employeeshiftdata 类(不是 db 表,但仍在模型文件夹中):
public class EmployeeShiftData
{
public int ID { get; set; } //EmployeeID
public string FirstName { get; set; }
public string LastName { get; set; }
public int StartWorkYear { get; set; }
public string DepartmentName { get; set; }
public List<Shift> Shifts { get; set; }
}
employeeshift GET 部分控制器:
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class EmployeeShiftDataController : ApiController
{
private static EmployeeShiftDataBL empShiftDataBL = new EmployeeShiftDataBL();
// GET: api/EmployeeShiftData
public IEnumerable<EmployeeShiftData> Get(string FirstName = "", string LastName = "", string Department = "")
{
return empShiftDataBL.GetAllEmployeeShiftData(FirstName, LastName, Department);
}
//...
}
【问题讨论】:
标签: rest asp.net-web-api