如何实现详细信息实体的插入或更新方法
本文关键字:插入 更新 新方法 实体 详细信息 何实现 实现 | 更新日期: 2023-09-27 18:34:03
我构建了与EntityFramework一起使用的存储库。我面临的问题之一是在这种情况下如何处理InsertOrUpdate方法:
如果我有接口方法:
void InsertOrUpdate(T entity);
此方法的实现适用于主表,如下所示:
public void InsertOrUpdate(Employee employee)
{
if (employee.EMP_NUM == default(int)) // New entity
{
context.Entry(employee).State = EntityState.Added;
}
else // Existing entity
{
context.Employees.Add(employee);
context.Entry(employee).State = EntityState.Modified;
}
}
现在,如果员工有很多这样的笔记:
EMP_NUM p.k
From_Date p.k
Note
如何使用复合键处理此实体的相同方法:
public void InsertOrUpdate(EmployeeNote employeeNote)
{
if (employeeNote.EMP_NUM == default(int)) // New entity
{
context.Entry(employeeNote).State = EntityState.Added;
}
else // Existing entity
{
context.EmployeeNotes.Add(employeeNote);
context.Entry(employeeNote).State = EntityState.Modified;
}
}
我认为使用struct
是最简单的解决方案:
public struct EmployeeKey
{
public int k;
public DateTime d;
}
if (new EmployeeKey{k = employeeNote.EMP_NUM, d = employeeNote.From_Date}
.Equals(default(EmployeeKey))
{
context.Entry(employeeNote).State = EntityState.Added;
}
default(struct)
创建一个具有其所有成员的默认值的struct
。
在一点旁注上:
这行:context.Employees.Add(employee);
对于现有实体,不应该是context.Employees.Attach(employee);
吗?