Поле обязательно для заполнения, если это не так. net Core entityframeworkcore - PullRequest
0 голосов
/ 03 апреля 2020

Я сгенерировал контекст и модель, запустив командную строку nuget

Scaffold-DbContext "Server=(LocalDb)\MSSQLLocalDB;Initial Catalog=DummyDB;
Integrated Security=True;Connect Timeout=30;" 
Microsoft.EntityFrameworkCore.SqlServer -outputDir Context -Context DummyContext

Когда я пытался пройти без необязательного поля «адрес», необходимо заполнить поле «адрес» для жалоб до достижения функции post. Есть идеи? Спасибо

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "firstName": "string",
  "age": 0
}

Мои коды генерируются следующим образом

DummyContext.cs

using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;

namespace ProjectTemplate.Context
{
public partial class DummyContext : DbContext
{
    public DummyContext()
    {
    }

    public DummyContext(DbContextOptions<DummyContext> options)
        : base(options)
    {
    }

    public virtual DbSet<Dummys> Dummys { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UseSqlServer("Server=(LocalDb)\\MSSQLLocalDB;Initial Catalog=DummyDB;Integrated Security=True;Connect Timeout=30;");
        }
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Dummys>(entity =>
        {
            entity.Property(e => e.Id).ValueGeneratedNever();

            entity.Property(e => e.Address)
                .HasColumnName("address")
                .HasMaxLength(200);

            entity.Property(e => e.Age).HasColumnName("age");

            entity.Property(e => e.FirstName)
                .IsRequired()
                .HasColumnName("firstName")
                .HasMaxLength(50);
        });

        OnModelCreatingPartial(modelBuilder);
    }

    partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}

}

Dummys.cs

using System;
using System.Collections.Generic;

namespace ProjectTemplate.Context
{
public partial class Dummys
{
    public Guid Id { get; set; }
    public string FirstName { get; set; }
    public int? Age { get; set; }
    public string Address { get; set; }
}
}

функция записи для createBook

    // POST: api/Dummy
    [HttpPost]
    public async Task<ActionResult<Dummys>> Post([FromBody] Dummys dummy)
    {
        dummy.Id = Guid.NewGuid();
        using (var context = new DummyContext())
        {
            context.Dummys.Add(dummy);
            context.SaveChanges();
        }
        return dummy;
    }

1 Ответ

0 голосов
/ 03 апреля 2020

Попробуйте добавить в свой адрес свойство .IsRequired(false). Это может работать, потому что свойство IsRequired всегда имеет значение true, и вы не можете сделать строку, допускающую обнуление, как int, bool et c.

entity.Property(e => e.Address)
    .HasColumnName("address")
    .HasMaxLength(200)
    .IsRequired(false);

Попробуйте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...