我构建了我的存储库以与EntityFramework一起使用。我面临的一个问题是如何在以下情况下处理InsertOrUpdate方法:
如果我有接口方法:
var d2=new Date();
d2.setHours(d2.getHours()+24);
d2.setMinutes(d2.getMinutes()+30);
此方法的实现适用于主表,如:
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
答案 0 :(得分:1)
我认为使用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);
吗?