【发布时间】:2020-01-28 02:53:04
【问题描述】:
我是 EF6 和 Asp.net MVC5 的新手。 当我尝试使用代码优先方法创建实体时,会自动生成唯一 ID。
考虑这样一个实体:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PostId { get; set; }
[Required]
[MaxLength(100), MinLength(5)]
public string Title { get; set; }
public string Content { get; set; }
public string Thumbnail { get; set; }
public string Description { get; set; }
public DateTime DateCreated { get; set; }
当我将 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 放在 PostId 上甚至删除它时。我总是收到这样的异常错误:
“无法将值 NULL 插入‘PostId’列”。 “列不允许空值。插入失败。
我不知道为什么 EF6 总是尝试在 Id 列中插入一个空值。
后来,我找到了解决办法。 我变了
DatabaseGeneratedOption.Identity 到 DatabaseGeneratedOption.None
问题就解决了。
但是,这个解决方案似乎不像我预期的那样工作。 插入列的值始终相同。这不是唯一的。
有了 EF 核心,一切都变得简单了,我不需要DatabaseGenerated,只需按照约定。但是对于 EF6,我被卡住了。我想要的是 Id 字段必须是唯一的,并且每次插入数据库时都会增加。
有人可以帮我吗?
【问题讨论】:
标签: asp.net asp.net-mvc entity-framework asp.net-mvc-5 entity-framework-6