Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

E quando o propriedade não for int como obrigar o entity a criar um campo na tabela como notnull

O migration esta criando a propriedade

 public class Professor
    {
        public string Id { get; set; }
        public string Nome { get; set; }
        public string Sobrenome { get; set; }
        public IList<ProfessorTurma> Turmas { get; set; }

        public Professor(string nome, string sobrenome)
        {
            Nome = nome;
            Sobrenome = sobrenome;
            //Turmas = new List<Turma>();
        }

        public bool ValidaProfessor()
        { 
            if(string.IsNullOrEmpty(Nome) || string.IsNullOrEmpty(Sobrenome)
                || Nome.Any(x => char.IsDigit(x)) || Sobrenome.Any(x => char.IsDigit(x))
                )
            {
                return false;
            }
            else
            {
                return true;
            }
        }
    }
}
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;

namespace Minos.Site.Migrations
{
    public partial class TurmaUsuarioProfessorProfessorTurma : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.CreateTable(
                name: "Professores",
                columns: table => new
                {
                    Id = table.Column<string>(nullable: false),
                    Nome = table.Column<string>(nullable: true),
                    Sobrenome = table.Column<string>(nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_Professores", x => x.Id);
                });

...

Ele está gerando o campo nome na tabelacomo nullable:true eu não quero que seja true, como eu faço para resolver esse problema?

1 resposta
solução!

Oi Robson, tudo bom?

Acredito que isso aconteça porque string é uma referência e, por definição, toda referencia pode ser nula.

Uma possível forma de sobrepor esse comportamento e indicar que esse campo é obrigatório com a annotation required:

    [Required]    
        public string Nome { get; set; }

Qualquer problema é só falar.

Abraço.