如何为详细实体实现 InsertOrUpdate 方法
How to implement InsertOrUpdate Method for detail entity
我构建了我的存储库以与 EntityFramework 一起使用。我面临的一个问题是如何在这种情况下处理 InsertOrUpdate 方法:
如果我有接口方法:
void InsertOrUpdate(T entity);
此方法的实现与 master table 配合得很好:
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);
吗?
我构建了我的存储库以与 EntityFramework 一起使用。我面临的一个问题是如何在这种情况下处理 InsertOrUpdate 方法:
如果我有接口方法:
void InsertOrUpdate(T entity);
此方法的实现与 master table 配合得很好:
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);
吗?