gpt4 book ai didi

c# - 带有 Entity Framework 的 ASP.NET : EF does not generate identity automatically

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:30 25 4
gpt4 key购买 nike

我是 ASP 的新手,我正在创建一个简单的 ASP.NET MVC 应用程序,它将个人信息存储在数据库中。使用 DB First 方法,我创建了以下数据库表:

CREATE TABLE [dbo].[Author] (
[PersonID] INT IDENTITY (1, 1) NOT NULL,
[MobileNum] NVARCHAR (50) NULL,
[Location] NVARCHAR (50) NULL,
[LinkedIn] NVARCHAR (50) NULL,
[FaceBook] NVARCHAR (50) NULL,
[Picture] IMAGE NULL,
[Name] NVARCHAR (50) NULL,
[Email] NVARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([PersonID] ASC)

);

我使用 PersonID 作为 PrimaryKey 并且我希望 EF 为我自动生成它,但由于某种原因,这并没有发生。我在属性中手动调整了身份选项:

PersonID marked as identity

我还将必要的属性附加到我的模型(尽管我在某处读到自动生成也应该在没有它们的情况下工作):

public partial class Author
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PersonID { get; set; }
public string MobileNum { get; set; }
public string Location { get; set; }
public string LinkedIn { get; set; }
public string FaceBook { get; set; }
public byte[] Picture { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}

然而,在创建新条目期间,数据库的 ModelState 始终为 false:

ModeslState is false

在调试器中仔细查看,问题似乎是 EF 期望 PersonID 由用户分配。

我有以下属于创建操作的 View:

<div class="form-group">
@Html.HiddenFor(model => model.PersonID, htmlAttributes: new { @class = "control-label col-md-2" })
</div>

我还应该做些什么来启用 PersonID 的自动生成吗?我错过了什么?将我指向初学者水平,DB First 文章也非常受欢迎,因为我发现的大多数文章都没有提到这个问题(例如 hereherehere )。

最佳答案

感谢您在评论部分提出的所有建议,但令人惊讶的是,问题与数据库或模型无关:我重新创建了整个数据库,但仍然出现相同的错误。事实证明,问题出在负责在创建新条目时提示用户输入的 View 中,更具体地说,这是有问题的部分:

<div class="form-group">
@Html.HiddenFor(model => model.PersonID, htmlAttributes: new { @class = "control-label col-md-2" })
</div>

解决方案:我刚刚删除了整个<div>@Html.HiddenFor id 的 html 助手,数据库现在接受新条目。就这么简单。

我认为导致问题的原因是数据库似乎希望用户提供 ID ,即使 helper 被设置为隐藏,我想,这就是为什么 ModelState.IsValid总是false .我用了@Html.HiddenFor在编辑功能中(我在创建之前编写了编辑以使用模拟数据测试数据库)并且它没有问题,所以我认为通过禁止用户与一段数据交互,ASP 将自动知道不要期望用户,但很明显,我错了。

关于c# - 带有 Entity Framework 的 ASP.NET : EF does not generate identity automatically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48590491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com