Generally speaking, it is preferable to use INT for Primary Key / Foreign Key fields, regardless of whether these fields are the leading field in clustered indexes. The problem is with JOIN performance, and even if you use UNIQUEINDENTIFIER as NonClustered or even if you used NEWSEQUENTIALID () to reduce fragmentation, it will become more scalable for JOIN between INT fields as tables grow. (Please note that I am not saying that PK / FK fields should always be INT, since quite accessible natural keys are sometimes used).
In your case, considering taking care of the Entity Framework and generating the GUID in the application, and not in the database, go to an alternative suggestion to use INT as PK / FK fields , but than to have UNIQUEIDENTIFIER in all tables, just put it in the main user data table / customer. I would think that you should be able to do a one-time search for the INT client identifier based on the GUID, cache this value, and then use the INT value for all remaining operations. And yes, make sure the UNIQUE, NONCLUSTERED index is in the GUID field.
All of the above, if your tables will never (and I mean NEVER, and not only in the first 2 years) grow beyond maybe 100,000 rows each, then using UNIQUEIDENTIFIER is less dangerous, because small amounts of rows usually execute ok (subject to moderately decent equipment that is not overloaded with other processes or with low memory capacity). Obviously, the point at which JOIN performance is degrading due to the use of UNIQUEIDENTIFIER will largely depend on the features of the system: the hardware, as well as what types of requests, how the requests are written and how much load the system has.
source share