asp.net web api服务器数据与BL之间的数据库不同步



您好,我是服务器和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);        
}
}

这是我创建的类中的一个方法的例子,该类用于组合两个表中的数据:

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请求路径的Employee(ShiftEmployeeData(是旧数据,通过EmployeeGET请求是好数据(假设数据是通过Employer路径更新的(。

反之亦然——如果我通过ShiftEmployeeData类更新Employee,它将显示为ShiftEmpEmployeedData类的好数据,而不会更新Employer。

我有两个类的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; }
}

员工更新(通过从数据库生成实体模型代码自动生成(:

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类(不是数据库表,但仍在models文件夹中(:

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获取控制器的一部分:

[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);
}
//...
}

需要查看与数据库交互的代码,尤其是进行更新的代码。

如果更改是用实体框架编写的,那么模型本身是否与导航属性正确相关?

public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public List<EmployeeShift> EmployeeShifts { get; set; }
// etc.
}
public class EmployeeShift
{
public int Id { get; set; }
public Int EmployeeID { get; set; }
public Employee Employee { get; set; }
// etc.
}

如果这些都很好,并且实体框架的上下文跟踪涵盖了这两个模型,那么这两个都应该更新。