Причина, по которой требуется два запроса, заключается в том, что для идентификатора значение столбца не определяется до тех пор, пока не будет вставлена строка. Поэтому для получения значения столбца для вставленного объекта требуется выбрать после вставки. Это довольно стандартно, и я бы не позволил ему остановить использование автоматически сгенерированных ключей в качестве моего первичного ключа. Другой вариант - предварительно сгенерировать ключ - скажем, GUID для нового объекта перед сохранением его в базе данных. По большей части я не вижу в этом преимущества, если нет других смягчающих обстоятельств, таких как необходимость объединения данных из отдельных баз данных, где могут возникать конфликты автоматически сгенерированных ключей.