Eu pessoalmente achei confuso as relações criadas entre as classes. Quando se usa 'HasMany' que recebe List, qdo usa 'HasOne', qdo tem retorno com 'WithOne', qdo não tem retorno... porque Produto não precisa criar uma relação... Lendo o código é bem simples de entender, mas escrever do zero eu não consegui. Sempre errava em alguma interpretação das relações desenhadas no diagrama de classes. Li o post sobre a tabela associativa que quebra a relação many-to-many e ajudou. Teria um 'algo a mais' para estudar essas relações? E sanar essas confusões?