EntityFramework Core自動生成密鑰id屬性

asp.net-core asp.net-core-mvc c# data-annotations entity-framework-core

使用.Net Core MVC。我需要設置我的模型,以便EntityFrameworkCore將自動生成ID屬性。我認為只需添加[Key]註釋即可,但事實並非如此。事實上,當ID字段留空時會產生錯誤,這總是因為我將其隱藏在用戶之外。

我需要它來代替每次為模型自動生成一個唯一的ID。我該怎麼做呢?我的ID屬性當前是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);
}

一般承認的答案

您需要更改ExampleModel數據註釋,以便它自動生成唯一ID。

ExampleModel

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

    public string SomeData { get; set; }
}

熱門答案

我想通過ModelState驗證的另一種方法是從ModelState中刪除它。

ModelState.Remove("ID");


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow