尝试将我的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的值(我尝试过,没有工作)是原因的解决方案而不是症状?
答案 0 :(得分:0)
可能的答案
更新您的edmx文件以反映您在数据库中可能进行的任何更改。如果数据库自动分配值,您应该看到&#34; IsDbGenerated = true&#34;在该属性下的设计器文件中的属性。如果不存在,您可以手动添加。
Entity Framework error: Cannot insert explicit value for identity column in table