"当IDENTITY_INSERT设置为OFF时,无法在表{Tags}中为标识列插入显式值。"

时间:2016-03-15 14:24:30

标签: c# sql-server entity-framework model-view-controller

尝试将我的Tag类的新实例添加到数据库时,我一直收到此错误。该错误特定于我的标签数据库表,所以我猜测我的代码试图将ID值传递给已经是标识并自动递增的列。

下面是PostController中CreatePost方法的相关信息的副本:

public ActionResult CreatePost(Post postFromForm, string tags)
    {
        postFromForm.CreatedOn = DateTime.Now;

        postFromForm.Tags = new List<Tag>();

        string[] tagList = tags.Split(' ');
        foreach (var tag in tagList)
        {
            Tag NewTag = new Tag();
            NewTag.Name = tag;
            postFromForm.Tags.Add(NewTag);
        }

        using (var dbContext = new blogEntities())
        {
            dbContext.Posts.Add(postFromForm);
            dbContext.SaveChanges();
        }

查看将参数传递给方法的表单字段:

 @Html.TextBox("title", "", new { @class = "form-control", @placeholder = "Title" })
 @Html.TextArea("body", "", new { @class = "BodyEdit form-control", @placeholder = "Start typing here..." })
 @Html.TextBox("tags", "", new { @class="form-control", @placeholder="Tags" })

 <input type="hidden" name="createdby" value="@Session["username"]" />    
 <input type="submit" class="btn btn-primary pull-right" value="Post" />

好的方面,看看我的课程:

public partial class Tag
{
    public Tag()
    {
        this.Posts = new HashSet<Post>();
    }

    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Post> Posts { get; set; }
}


public partial class Post
{
    public Post()
    {
        this.Comments = new HashSet<Comment>();
        this.Tags = new HashSet<Tag>();
    }

    public string Title { get; set; }
    public string Body { get; set; }
    public System.DateTime CreatedOn { get; set; }
    public int Id { get; set; }
    public Nullable<System.DateTime> EditedOn { get; set; }
    public string CreatedBy { get; set; }

    public virtual ICollection<Comment> Comments { get; set; }
    public virtual ICollection<Tag> Tags { get; set; }
}

任何见解都会非常感激 - 整个下午,我一直在撞墙。如果可能的话,是否有人知道如果只是改变IDENTITY_INSERT的值(我尝试过,没有工作)是原因的解决方案而不是症状?

1 个答案:

答案 0 :(得分:0)

可能的答案

更新您的edmx文件以反映您在数据库中可能进行的任何更改。如果数据库自动分配值,您应该看到&#34; IsDbGenerated = true&#34;在该属性下的设计器文件中的属性。如果不存在,您可以手动添加。

Entity Framework error: Cannot insert explicit value for identity column in table