EntityFramework Core auto generate key id property

10,315

Solution 1

You need to change your data annotations for your ExampleModel so that it auto generates a unique ID.

ExampleModel

public class ExampleModel
{
    [ScaffoldColumn(false)]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }

    public string SomeData { get; set; }
}

Solution 2

I guess another way to pass by ModelState validation is to remove it from ModelState.

ModelState.Remove("ID");
Share:
10,315
Joe Higley
Author by

Joe Higley

Updated on June 17, 2022

Comments

  • Joe Higley
    Joe Higley almost 2 years

    Using .Net Core MVC. I need to setup my model so that EntityFrameworkCore will auto generate the ID property. I thought that just adding the [Key] annotation would do this, but it doesn't. As a matter of fact, it produces an error when the ID field is left blank, which is always because I'm hiding it from the user.

    I need it to instead Autogenerate a unique ID for the model every time. How do I go about doing this? My ID property is currently of type int.

    ExampleModel

    public class ExampleModel
    {
        [Key]
        public int ID { get; set; }
        public string SomeData { get; set; }
    }
    

    ExampleView

    @model MyNamespace.Models.ExampleModel
    
    <form asp-action="Create" asp-controller="ExampleModel">
        @Html.EditorForModel()
        <input type="submit" name="Submit" value="Create"/>
    </form>
    

    ExampleController

    public IActionResult Create ()
    {
        return View();
    }
    public IActionResult Create (ExampleModel model)
    {
        if (ModelState.IsValid)
        {
            _context.ExampleModels.Add(model);
            _context.SaveChanges();
            return RedirectToAction("Index");
        }
    
        return View(model);
    }