Não entendi muito bem seu objetivo.
Pq eu precisaria de recriar a FK de um banco que já existe?
Ou ainda se eu já tenho um código construído com code first pq iria alterar a estrutura das tabelas exceto por mudança de regra de negócio?
Verificou se não é problema na geração de código do ORM?
Mas voltando a sua dúvida aqui na empresa onde trabalho as tabelas tem PK como Id e FK como _Id.
Trabalho com csharp porém quando utilizava typescript as FK eram tipadas com o tipo do ID da PK, assim qualquer mudança na PK estoura erro na fase de transpilação.
Segue exemplo:
type User = {
Id: string;
FirstName: string;
scope: Role;
}
type Role = 'Admin' | 'Customer' | 'Manager';
type Adress = {
CustomerId = User['Id'];
Value = string;
}
Simplifiquei os campos mas veja que ao tipar CustomerId eu forço um acoplamento. Se Id for eliminado de User vai estourar erro em toda aplicação.
Fora que o meu domínio não precisa de ser exatamente o que está no banco, posso incluir uma camada para fazer o de/para.