В this SO answer о Entity Framework и MERGE, пример того, как его кодировать, таков:
public void SaveOrUpdate(MyEntity entity)
{
if (entity.Id == 0)
{
context.MyEntities.AddObject(entity);
}
else
{
context.MyEntities.Attach(entity);
context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
}
}
Это предполагает, что вы уже знаете, существует ли сущность, которую вы хотите восстановить, или нет; в этом случае вы проверяете entity.Id
. Но что, если вы не знаете, существует ли предмет или нет? Например, в моем случае я импортирую записи из поставщика в свою базу данных, и данная запись может быть или не быть уже импортирована. Я хочу обновить запись, если она существует, иначе добавьте ее. Но идентификатор поставщика уже установлен в обоих случаях.
Я не вижу никакого способа сделать это, если я просто не спрошу базу данных, если запись уже существует, что наносит ущерб всей цели MERGE.