ID not set on entity class

When I execute:
Result := ObjectManager.Find<TGrade>.OrderBy('ID').List;

I receive the following exception:

ID not set on entity of class TGrade

Please let me know what might be causing the exception.  Below is how the entity is mapped.  FYI, I have a similar entity (TProgram) which has also inherits from TCategory and executing the same query using TProgram does not produce an exception.

  TCategory = class(TModel)
  private
    FID: Integer;
    FCaption: string;
    FAbbrev: string;
    FOrdValue: Integer;
  protected
    property ID: Integer read FID write FID;
    property Caption: string read FCaption write FCaption;
    property Abbrev: string read FAbbrev write FAbbrev;
    property OrdValue: Integer read FOrdValue write FOrdValue;
  end;

  [Entity]
  [Table('T_GRADE')]
  [ID('ID', TIdGenerator.IdentityOrSequence)]
  TGrade = class(TCategory)
  private
    FNextID: Nullable<Integer>;

    [Association([TAssociationProp.Lazy], CascadeTypeAll - [TCascadeType.Remove])]
    [JoinColumn('SUB_DIVISION_ID', [TColumnProp.Required])]
    FSubDivision: Proxy<TSubDivision>;

    [Column('OLD_ABBREV', [], 10)]
    FOldAbbrev: string;
    function GetSubDivision: TSubDivision;
    procedure SetSubDivision(const Value: TSubDivision);
  public
    [Column('ID', [TColumnProp.Required])]
    property ID;

    [Column('CAPTION', [TColumnProp.Required, TColumnProp.Unique], 25)]
    property Caption;

    [Column('ABBREV', [TColumnProp.Required, TColumnProp.Unique], 5)]
    property Abbrev;

    [Column('NEXT_ID', [])]
    property NextID: Nullable<Integer> read FNextID write FNextID;

    [Column('ORD_VALUE', [TColumnProp.Required])]
    property OrdValue;
    property OldAbbrev: string read FOldAbbrev write FOldAbbrev;

FYI, here is the mapping for TProgram, which does NOT create an exception:
  [Entity]
  [Table('T_PROGRAM')]
  [ID('ID', TIdGenerator.IdentityOrSequence)]
  TProgram = class(TCategory)
  private
    FOldID: Integer;
  public
    [Column('ID', [TColumnProp.Required])]
    property ID;

    [Column('CAPTION', [TColumnProp.Required, TColumnProp.Unique], 25)]
    property Caption;

    [Column('ABBREV', [TColumnProp.Required, TColumnProp.Unique], 5)]
    property Abbrev;

    [Column('ORD_VALUE', [TColumnProp.Required])]
    property OrdValue;

    [Column('OLD_ID', [])]
    property OldID: Integer read FOldID write FOldID;
  end;

One common reason is that you have a record in table T_GRADE where the value of column ID is zero. 

You are right!  Will change it to a different number.