It's common to use int, Guid, or string to represent entity ids because these types are well-supported by databases. The problems come when you have methods with multiple parameters of the same type. In this case, it's easy to mix up parameters when calling these methods. Issue GetIssue(int projectId, int issueId) { /* todo */ } int projectId = 1; int issueId = 1; Get(issueId, projectId); // wrong… [read more]