Это своего рода Leaky Abstraction, с которой приходится иметь дело всем.
Есть и другие примеры утечки персистентности в другие слои, например, проверка длины строки в доменном слое, потому что длина столбца базы данных установлена на некоторое значение.Другим примером может быть предоставление EF IQueryable из DAL на доменный уровень, поскольку при этом потенциальная схема базы данных просачивается на доменный уровень.
Так что я думаю, что есть приемлемый компромисс, с которым мы могли бы иметь дело, и мы не можемустранить утечку абстракции вообще, но мы должны усердно работать, чтобы иметь его как минимум.Предоставление идентификатора пользовательскому интерфейсу является таким приемлемым компромиссом, с которым я имею дело, потому что он прост, и все это понимают.
Но если у кого-то есть серебряная пуля, я буду рад услышать о:)