Olá Daniel,
Não tenho certeza se a interface ICollection é serializável, mas a interface ICollection é serializável.
Tente fazer algo como o exemplo abaixo:
public class Categoria
{
public int Id { get; set; }
public string nome { get; set; }
public virtual ICollection produto { get; set; }
}
Veja que eu especifiquei o tipo genérico da collection na propriedade ‘produto’. Acredito que vc terá de fazer isso com as demais.
[]s!