Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有实体框架的ASP.NET:EF不会自动生成标识_C#_Asp.net_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 具有实体框架的ASP.NET:EF不会自动生成标识

C# 具有实体框架的ASP.NET:EF不会自动生成标识,c#,asp.net,asp.net-mvc,entity-framework,C#,Asp.net,Asp.net Mvc,Entity Framework,我对ASP很陌生,我正在创建一个简单的ASP.NET MVC应用程序,它将个人信息存储在数据库中。使用DB First方法,我创建了以下DB表: CREATE TABLE [dbo].[Author] ( [PersonID] INT IDENTITY (1, 1) NOT NULL, [MobileNum] NVARCHAR (50) NULL, [Location] NVARCHAR (50) NULL, [LinkedIn] NVARCHAR (50) NULL,

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

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作为
主键
,我希望EF能自动生成它,但由于某种原因,这并没有发生。 我在属性中手动调整了标识选项:

我还为我的模型附加了必要的属性(尽管我在某个地方读到,如果没有这些属性,自动生成也可以工作):

但是,在创建新条目期间,db的
ModelState
始终为false:

在调试器中仔细查看一下,问题似乎是EF希望用户分配PersonID

我有以下属于创建操作的
视图

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

@HiddenFor(model=>model.PersonID,htmlAttributes:new{@class=“controllabel col-md-2”})

我还应该做些什么来实现人格的自动生成?我错过了什么?将我引向初学者,DB First文章也非常受欢迎,因为我发现的大多数文章都没有提到这个问题(例如,、或)。

试试这段代码来声明主键

[PersonID] int IDENTITY(1,1) PRIMARY KEY

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

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

@HiddenFor(model=>model.PersonID,htmlAttributes:new{@class=“controllabel col-md-2”})
解决方案:我刚刚用id的
@Html.HiddenFor
Html助手删除了整个
,db现在接受新条目。就这么简单


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

这将非常好,如果您可以发布您的创建表脚本而不是使用图片,那么我们可以通过复制粘贴所有内容来更轻松地复制它。可能的重复代码看起来是有效的。当你击中柱子时,a.PersonID的价值是什么?您可能想考虑使用AutoPAPER。这就解决了很多问题。马可:没错,我更新了我的帖子,@Lalithanand Barla:我有一个int autoporperty,一开始没有注释,所以我有一个不同的问题。@SteveGreene:PersonID是0,而我的IdentitySeed是1,所以这可能是因为int的默认值。
<div class="form-group">
    @Html.HiddenFor(model => model.PersonID, htmlAttributes: new { @class = "control-label col-md-2" })
</div>