C# 实体框架代码第一个标识插入异常

C# 实体框架代码第一个标识插入异常,c#,sql,asp.net-mvc,entity-framework,ef-code-first,C#,Sql,Asp.net Mvc,Entity Framework,Ef Code First,因此,我在使用实体框架和代码优先方法插入带有整数ID字段的记录时遇到了一个问题。当我尝试插入ID为0或null的记录时,会出现以下异常 其他信息:Store update、insert或delete语句影响了>意外的行数(0)。自从加载>实体后,实体可能已被修改或删除。有关了解和处理乐观并发异常的信息,请参见> 这是我的控制器中的代码 // POST: Products/Create // To protect from overposting attacks, please e

因此,我在使用实体框架和代码优先方法插入带有整数ID字段的记录时遇到了一个问题。当我尝试插入ID为0或null的记录时,会出现以下异常

其他信息:Store update、insert或delete语句影响了>意外的行数(0)。自从加载>实体后,实体可能已被修改或删除。有关了解和处理乐观并发异常的信息,请参见>

这是我的控制器中的代码

    // POST: Products/Create
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "Product_ID,PageURL,Name,Code,Description,Category_ID,Price,DateCreated,DateModified,Featured")] Product product)
    {

        product.DateCreated = DateTime.Now;
        product.DateModified = DateTime.Now;

        if (ModelState.IsValid)
        {
            db.Products.Add(product);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        ViewBag.Category_ID = new SelectList(db.Categories, "Category_ID", "CategoryName", product.Category_ID);
        return View(product);
    }
这是要插入的实体的模型

namespace SeniorProjectMVC.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Data.Entity.Spatial;

    [Table("Product")]
    public partial class Product
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Product()
        {
            OrderLines = new HashSet<OrderLine>();
            SKU_Table = new HashSet<SKU_Table>();
            XREF_CatalogProduct = new HashSet<XREF_CatalogProduct>();
        }

        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int ID { get; set; }

        public string FormattedPrice { get { return this.Price.ToString("C"); } }

        //[Key]
        [Required]
        [MaxLength]
        public string PageURL { get; set; }

        [Required]
        [StringLength(250)]
        public string Name { get; set; }

        [Required]
        public string Code { get; set; }

        public string Description { get; set; }

        public int Category_ID { get; set; }

        [Column(TypeName = "money")]
        public decimal Price { get; set; }

        public DateTime? DateCreated { get; set; }

        public DateTime? DateModified { get; set; }

        [Required]        
        public bool Featured { get; set; }

        public virtual Category Category { get; set; }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<OrderLine> OrderLines { get; set; }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<OrderLine> ProductImage { get; set; }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<SKU_Table> SKU_Table { get; set; }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<XREF_CatalogProduct> XREF_CatalogProduct { get; set; }
    }
}
更新 我已经添加了数据库模式的屏幕截图。我尝试将notmapped数据注释添加到该只读属性,如下面的注释所述。它没有修复异常。我错过什么了吗


更新:我试图确保我的模式匹配,我在只读属性中添加了数据注释,以指定它没有映射,但我仍然得到这个异常。我没有足够的声誉来悬赏,我真的需要帮助解决这个问题。

如果没有看到您的数据库模式,我敢打赌您的模型没有正确映射到它所基于的表。你的财产

public string FormattedPrice { get { return this.Price.ToString("C"); } }
是派生属性,无法映射到数据库字段,但您没有告诉EF忽略它。尝试向其添加[NotMapped]注释。同样,检查所有属性在数据库中是否都有相应的字段


如果您想获得更多帮助以确定可能的问题,请随时发布表格DDL语句进行创建。

将产品对象添加到数据库时是否设置了产品对象的
ID
?如果不绑定ID,添加是否有效?是的,它设置为0。我将尝试删除该文件binding@BradleyMoorfield我更新了这个问题。这似乎无法解决问题。您可以发布整个DbContext类吗?这似乎是一个乐观的并发问题。还有一个问题,“db”对象来自哪里?它是单例模式吗?正如您在上面看到的我的模式一样,所有内容似乎都正确地映射到了该模式。你还有其他想法吗?问题可能是什么?我有另一个模型成功地添加了多个记录。我看不出你的模型还有什么问题。如果你把解决方案放在什么地方,我会帮你看一看。
public string FormattedPrice { get { return this.Price.ToString("C"); } }