c# - 当 IDENTITY_INSERT 设置为 OFF 时,无法为标识列插入显式值

标签 c# sql-server entity-framework linq asp.net-mvc-5

我正在尝试设置一个复合主键,第二个键是年份。

我已经在表创建和构造函数中设置为自动生成字段,但我仍然收到此错误:

Cannot insert explicit value for identity column in table Volunteer when IDENTITY_INSERT is set to OFF.

代码和设置的所有三个部分如下。

  [Table("Volunteer")]
    public class Volunteer
    {

        [Key][Column(Order = 0)]
        public int Id { get; set; }

        [DisplayName("First Name")]
        public string FirstName { get; set; }

        [DisplayName("Last Name")]
        public string LastName { get; set; }

        [DisplayName("Team Mentored")]
        public string TeamMentored { get; set; }


        [Key][Column(Order = 1)] [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public DateTime Year { get; set; }
        public string TableNumber { get; set; }
        public int OfficeId { get; set; }
        public string Image { get; set; }


    }

CREATE TABLE [dbo].[Volunteer](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [FirstName] [nvarchar](255) NULL,
    [LastName] [nvarchar](255) NULL,
    [TeamMentored] [nvarchar](255) NULL,
    [Year] [date] DEFAULT(getdate()) NOT NULL,
    [TableNumber] [nvarchar](50) NULL,
    [OfficeId] [int] NOT NULL,
    [Image] [nvarchar](max) NULL
 )


public ActionResult Create([Bind(Include = "FirstName,LastName,TeamMentored,TableNumber,OfficeId,Image")] Volunteer volunteer)
        {
            try
            {

                if (ModelState.IsValid)
                {
                    db.Volunteers.Add(volunteer);
                    db.SaveChanges();

                    ModelState.Clear();
                } 

                // TODO: Add insert logic here

                return RedirectToAction("Index");
            }
            catch
            {
                ModelState.AddModelError("", "DB Update Failed!"); 
            }

            return View();
        }

最佳答案

尝试在“Id”属性上使用属性 [DatabaseGenerated(DatabaseGeneratedOption.Identity)]。如果那不行,是否可以发布分配代码并保存?

关于c# - 当 IDENTITY_INSERT 设置为 OFF 时,无法为标识列插入显式值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35185796/

相关文章:

java - 为什么我的存储过程的日期时间参数被拒绝?

asp.net - 用于应用 Entity Framework 迁移的 PowerShell?

c# - .NET 最小 API : how to map all route and all verb in the same handler?

c# - C# 中是否有任何 Int24 实现?

c# - 如何从字符串中删除枚举?

sql - SQL递归部分和

sql-server - SQL Server 中插入与更新的成本

c# - EF加载层次结构的最佳方式(需要所有项目)

entity-framework - 必须存在默认的 DbContext 上下文,或者必须提供上下文工厂

c# - 如何缓冲传入的串行端口值。 C#