Table of Contents


At a minimum, resources must implement IIdentifiable<TId> where TId is the type of the primary key. The easiest way to do this is to inherit from Identifiable<TId>.

public class Person : Identifiable<Guid>

Earlier versions of JsonApiDotNetCore allowed a short-hand notation when TId is of type int. This was removed in v5.

If you need to attach annotations or attributes on the Id property, you can override the virtual property.

public class Person : Identifiable<int>
    public override int Id { get; set; }

If your resource must inherit from another class, you can always implement the interface yourself. In this example, ApplicationUser inherits from IdentityUser which already contains an Id property of type string.

public class ApplicationUser : IdentityUser, IIdentifiable<string>
    public string StringId { get => Id; set => Id = value; }