簡體   English   中英

帶有EF代碼的mvc3首先插入多對多

[英]mvc3 with EF code first insert many to many

我有一個多對多關系,定義為

public class Article
    {
        [Required]
        public int Id                                   { get; set; }

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

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

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

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

        [Required]
        public DateTime Date                            { get; set; }

        [Required]
        public int UserId                               { get; set; }

        [Required]
        public double Rating                            { get; set; }

        [Required]
        public int RatingCount                          { get; set; }

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

public class Tag
{
    [Required]
    public int Id      { get; set; }

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

    public virtual ICollection<Article> Articles { get; set; }
}

我可以輕松插入文章和標簽,但是當我嘗試插入時

var articles = new List<Article>
            {
                new Article{ Id = 1, 
                             Date = DateTime.Now, 
                             Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eu molestie eros. Donec sed orci gravida sem ultricies facilisis in ut diam. Quisque at nulla convallis augue congue vehicula quis vel ligula. Ut ultricies massa sit amet sapien commodo eu luctus arcu malesuada. Pellentesque id augue a augue consectetur mattis. Donec id arcu non est suscipit auctor. Donec quis nulla nisl, ut malesuada quam. Donec commodo rh",
                             Content = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eu molestie eros. Donec sed orci gravida sem ultricies facilisis in ut diam. Quisque at nulla convallis augue congue vehicula quis vel ligula. Ut ultricies massa sit amet sapien commodo eu luctus arcu malesuada. Pellentesque id augue a augue consectetur mattis. Donec id arcu non est suscipit auctor. Donec quis nulla nisl, ut malesuada quam. Donec commodo rhoncus aliquam. Phasellus suscipit, sem a euismod bibendum, ipsum leo congue dui, eu sollicitudin eros augue ac dui. Suspendisse non tellus mauris, nec vulputate magna. Morbi ac sem felis. Duis facilisis nisl id sapien aliquam sit amet dignissim tellus pretium. Quisque dapibus aliquam sem, sit amet elementum justo fringilla nec. Integer ac arcu sit amet nulla porttitor volutpat. ",                             
                             IsPublished = true,                             
                             Title = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
                             UserId = 1,
                             Rating = 0,
                             RatingCount = 0,
                             Tags = new List<Tag>
                             {
                                new Tag{Id = 1}, 
                                new Tag{Id = 2}
                             }

                }
            };
            articles.ForEach(s => dataContext.Article.Add(s));
            dataContext.SaveChanges();

我得到

System.Data.Entity.Validation.DbEntityValidationException : Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
at System.Data.Entity.Internal.InternalContext.SaveChanges()
at System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
at System.Data.Entity.DbContext.SaveChanges()
at GigaWebSolutionMVC3Tests.DataBaseHelper.AddArticles(GigaWebSolutionMvc3DataContext dataContext) in DataBaseHelper.cs: line 81
at GigaWebSolutionMVC3Tests.DataBaseHelper.AddData(GigaWebSolutionMvc3DataContext dataContext) in DataBaseHelper.cs: line 17
at GigaWebSolutionMVC3Tests.GigaWebSolutionMvc3DataContextTests.Should_be_able_to_add_data_to_the_database() in GigaWebSolutionMVC3DataContextTests.cs: line 41

如何插入文章標簽?

謝謝

您似乎正在創建這樣的標簽:

Tags = new List<Tag>
{
    new Tag{Id = 1}, 
    new Tag{Id = 2}
}

僅提供ID。 但是在模型中,您的Name屬性也指定為[Required],請參見:

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

要解決此問題,請嘗試添加標簽名稱。 例如:

Tags = new List<Tag>
{
    new Tag{Id = 1, Name = "some name"}, 
    new Tag{Id = 2, Name = "another tag name"}
}

或者,從“名稱[Required]屬性中刪除[Required]屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM