El operador binario Igual no está definido entre el tipo de Nullable <Int32> y Int32

Tengo el siguiente modelo:

public class DeviceConfigurationModel
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    [Display(Name = "Device Configuration Id")]
    public int DeviceConfigurationId { get; set; }

    [Required]
    [Display(Name = "Device Profile Name")]
    [StringLength(50)]
    public string ProfileName { get; set; }

    [StringLength(50)]
    public string SERV { get; set; }

    [StringLength(50)]
    public string IPAD { get; set; }

    public Nullable<int> PORT { get; set; }

    [Required]
    [Display(Name = "Is Active")]
    public bool IsActive { get; set; }

    [Required]
    [Display(Name = "Date Created")]
    public DateTime DateCreated { get; set; }
}

que sembré a través de la consola del gestor de paquetes con el comandoupdate-database y el siguiente código en la configuración.cs para la migración:

    context.DeviceConfigurations.AddOrUpdate(
         d => new { d.ProfileName, d.IPAD, d.PORT, d.IsActive },
              new DeviceConfigurationModel { ProfileName = "FMG Default Gateway", IPAD = "77.86.28.50", PORT = (int?)90, IsActive = true  }
    );

Sin embargo, siempre que intenta ejecutar esta línea de código, aparece el siguiente error en la consola:

The binary operator Equal is not defined for the types 'System.Nullable`1[System.Int32]' and 'System.Int32'.

¿Alguien sabe cómo solucionar este problema? He intentado buscar respuestas, pero la mayoría de las soluciones son hacer que no se pueda aceptar nulos y simplemente aceptar un cero, pero no quiero hacer esto, ya que necesito usar un valor cero para algunos de los campos

ACTUALIZAR

Después de haber jugado con esto, lo he reducido a la lista de cosas en las que se ejecuta la actualización: si omito eld.PORT de la linea

d => new { d.ProfileName, d.IPAD, d.PORT, d.IsActive }

entonces la actualización funciona bien. Seguramente debe haber una manera de hacer que la actualización también vea este campo, de lo contrario, parece que usar mvc es bastante inútil si ni siquiera puede manejar una cosa simple como un int.

Respuestas a la pregunta(1)

Su respuesta a la pregunta