如何使模型 id 在 asp mvc 中可插入和可编辑?

Posted

技术标签:

【中文标题】如何使模型 id 在 asp mvc 中可插入和可编辑?【英文标题】:How make model id insertable and editable in asp mvc? 【发布时间】:2017-05-25 19:17:23 【问题描述】:

我无法初始化或编辑模型 ID。

这是我的模型,每个值都有一个特定的 ID。例如 id = 11 的值为“computer”,但我无法初始化我的模型 ID。当我发布 id =11 并且 value ="computer" 数据库为 id 设置值 1 并为下一个值增加它。

  public class Faculty
    
        [Key]
        public int Id  get; set; 
        public string value  get; set; 
        public override string ToString()
        
            return value;
        
    

数据库表定义如下:

CREATE TABLE [dbo].[Faculty] (
    [Id]    INT            IDENTITY (1, 1) NOT NULL,
    [value] NVARCHAR (MAX) NULL,
    CONSTRAINT [PK_dbo.Faculty] PRIMARY KEY CLUSTERED ([Id] ASC)
);

我应该如何更改我的模型以使我的模型 ID 可插入?

【问题讨论】:

列 ID 的身份有问题。您需要删除身份 @ISHIDA 我不想更改表 SQL 定义我想从我的模型代码中更改它。 【参考方案1】:

删除表并重新创建它。

CREATE TABLE [dbo].[Sexes] ( [Id] INT NOT NULL, [value] NVARCHAR (MAX) NULL, CONSTRAINT [PK_dbo.Sexes] PRIMARY KEY CLUSTERED ([Id] ASC) );

如果你想让你的 EF 更新 id,你可以这样做

`using (var dataContext = new DataModelContainer())
using (var transaction = dataContext.Database.BeginTransaction())

var user = new User()

ID = id,
Name = "John"
;
dataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[User] OFF");
dataContext.User.Add(user);
dataContext.SaveChanges();
dataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[User] ON");
transaction.Commit();
`

如果你想在模型上使用数据注释,试试这个 -

public class MyEntity 
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id  get; set;         

【讨论】:

问题不在于 SQL,而在于实体框架 ORM。 我已经从您的模型中更新了我的答案,您可能需要关闭身份并保存记录并重新打开。 您的回答似乎不错,但我的模型 id 字段是否有任何 DataAnnotations 将身份设置为 false? [DatabaseGenerated(DatabaseGeneratedOption.None)]

以上是关于如何使模型 id 在 asp mvc 中可插入和可编辑?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC

FluentValidation/MVC/ASP Identity:验证模型时如何获取当前用户 ID?

如何使数组值在 C# MVC 控制器中可读

Orchard 发布1.0版本和ASP.NET MVC 3 RTM

ASP.NET MVC 如何通过 Id 从另一个模型中获取名称

C# ASP MVC 路由模型 ID 错误