Już kiedyś pytałem i w sumie nie znalazłem odpowiedzi, na necie ludzie różnie piszą, żeby robić konwertery.

Chodzi mniej więcej o coś takiego

 public class User
    {
        public UserId Id { get; set; }
        public string Name { get; set; }
    }

    public class UserId
    {
        public int Id { get; set; }
    }
            modelBuilder.Entity<User>(builder =>
            {
                builder.ToTable("User");
                builder.HasKey(x => x.Id);
            });

znalazłem coś takiego, tylko, że tutaj nie działa value auto increment i useidentitycolumn

   var converter = new ValueConverter<UserId, int>(
       v => (int)v.Value,
       v => (UserId)v,
       new ConverterMappingHints(valueGeneratorFactory: (p, t) => new TemporaryIntValueGenerator()));

      builder.Property(x => x.Id).HasConversion(converter);

Może, ktoś ma jakiś pomysł ?