Всё таки интересно, не нашел описание синтаксиса, который в теле функции, выглядит как констрейнт для типа (ну и по сути он и есть), но они ж вроде в декларации обычно токо. И если констрейнт, то что выражает взятие мембера Id ?
И почему по такому
let inline getId entity = entity.Id
не выводить бы аналогичный констрайнт для entity ?