я строю свое хранилище для использования с EntityFramework .one проблем я столкнулся в том, как обрабатывать метод InsertOrUpdate в случае подобного:Как реализовать 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;
}
}
Я никогда не использую составные клавиши. Каждый объект наследует базовый класс с целым Id. Но если вы хотите использовать составные ключи, здесь есть статья, которая может помочь ... http: //blog.oneunicorn.com/2012/05/03/the-key-to-addorupdate/ – Colin
@Colin: Не могли бы вы уточнить ваше решение с примером пожалуйста –