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

时间:2017-05-25 19:17:24

标签: asp.net-mvc entity-framework orm model

我无法初始化或修改模型ID。

  

这是我的模型,每个值都有一个特定的id。例如,id = 11具有值"计算机"但我无法初始化我的模型ID。当我发布id = 11和值="计算机"数据库设置值1表示id,并将其递增为下一个值。

  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可插入?

1 个答案:

答案 0 :(得分: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();
}`

如果你想在模型上使用dataannotation,试试这个 -

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