Faz tempo que fiz o curso de Entity Framework e não estou com um projeto aqui para confirmar, mas pode usar anotações (data-annotations) nas propriedades para definir isso.
No exemplo abaixo, a propriedade Descricao
será mapeada com tamanho de 100 caracteres.
[ComplexType]
public class BlogDetalhes
{
[MaxLength(100)]
public string Descricao { get; set; }
}
Além de data-annotations, é possível definir um modelo de configuração. Consegue mais detalhes no curso Entity Framework Core parte 1: Mapeando um banco pré-existente e Entity Framework Core parte 2: Mapeando um banco pré-existente, mas também tem uma explicação no site da Microsoft Code First Data Annotations.
Sobre o ID, tenho quase certeza que o padrão é ser auto-incremento, mas consegue mudar isso com data-annotations também.
O IsRequired()
realmente não vai permitir valores nulos. Você está especificando que o valor precisa ser preenchido. Está requerendo que seja preenchido.