EntityFramework 核心自动生成密钥 ID 属性
EntityFramework Core auto generate key id property
使用 .Net 核心 MVC。我需要设置我的模型,以便 EntityFrameworkCore 自动生成 ID 属性。我认为只需添加 [Key]
注释就可以做到这一点,但事实并非如此。事实上,当 ID 字段留空时它会产生错误,这总是因为我对用户隐藏了它。
我需要它每次都为模型自动生成一个唯一 ID。我该怎么做呢?我的 ID 属性 目前的类型是 int
。
示例模型
public class ExampleModel
{
[Key]
public int ID { get; set; }
public string SomeData { get; set; }
}
示例视图
@model MyNamespace.Models.ExampleModel
<form asp-action="Create" asp-controller="ExampleModel">
@Html.EditorForModel()
<input type="submit" name="Submit" value="Create"/>
</form>
示例控制器
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);
}
要自动生成密钥,您必须定义指向 "NewId()" 的默认约束。 [Key]
只会创建一个主键约束。
您可以在数据库本身或模型生成中执行此操作
我明白了。我需要做的就是添加数据注释 [ScaffoldColumn(false)]
现在它可以工作了。
您需要更改 ExampleModel
的数据注释,以便它自动生成唯一 ID。
示例模型
public class ExampleModel
{
[ScaffoldColumn(false)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string SomeData { get; set; }
}
我想通过 ModelState 验证的另一种方法是将其从 ModelState 中删除。
ModelState.Remove("ID");
使用 .Net 核心 MVC。我需要设置我的模型,以便 EntityFrameworkCore 自动生成 ID 属性。我认为只需添加 [Key]
注释就可以做到这一点,但事实并非如此。事实上,当 ID 字段留空时它会产生错误,这总是因为我对用户隐藏了它。
我需要它每次都为模型自动生成一个唯一 ID。我该怎么做呢?我的 ID 属性 目前的类型是 int
。
示例模型
public class ExampleModel
{
[Key]
public int ID { get; set; }
public string SomeData { get; set; }
}
示例视图
@model MyNamespace.Models.ExampleModel
<form asp-action="Create" asp-controller="ExampleModel">
@Html.EditorForModel()
<input type="submit" name="Submit" value="Create"/>
</form>
示例控制器
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);
}
要自动生成密钥,您必须定义指向 "NewId()" 的默认约束。 [Key]
只会创建一个主键约束。
您可以在数据库本身或模型生成中执行此操作
我明白了。我需要做的就是添加数据注释 [ScaffoldColumn(false)]
现在它可以工作了。
您需要更改 ExampleModel
的数据注释,以便它自动生成唯一 ID。
示例模型
public class ExampleModel
{
[ScaffoldColumn(false)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string SomeData { get; set; }
}
我想通过 ModelState 验证的另一种方法是将其从 ModelState 中删除。
ModelState.Remove("ID");