如何使模型 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 中可插入和可编辑?的主要内容,如果未能解决你的问题,请参考以下文章
FluentValidation/MVC/ASP Identity:验证模型时如何获取当前用户 ID?
Orchard 发布1.0版本和ASP.NET MVC 3 RTM