Произошла ошибка при обновлении записей.Смотрите внутреннее исключение для деталей.- Asps.net MVC 3 - PullRequest
0 голосов
/ 13 сентября 2011

Я получаю это исключение каждый раз, когда я запускаю и пытаюсь создать сообщение ..

У меня есть простая сущность Пользователь, Пост, Комментарий, Тег. который имеет отношения, определенные мной. когда я проверяю innerException, оно говорит "Cannot insert the value NULL into column 'CommentID', table " ... и указывает на мой контекст, в котором у меня определена связь. Пожалуйста, проверьте мои отношения и помогите мне найти их, где я объявил, что null не допускается в идентификаторе комментария ...

  1. 1 пользователь может иметь много сообщений, может создавать много тегов, может иметь много комментарии
  2. 1 сообщение может иметь 1 пользователя, много комментариев и может иметь много тегов
  3. 1 тег может иметь 1 пользователя, много сообщений
  4. 1 комментарий может иметь 1 пользователь, 1 сообщение

Relationship ...

modelBuilder.Entity<User>().HasMany(p => p.Posts).WithRequired(u => u.Users).HasForeignKey(P=>P.UserID);
            modelBuilder.Entity<User>().HasMany(t => t.Tags).WithRequired(u => u.Users);
            modelBuilder.Entity<User>().HasMany(c => c.Comments).WithRequired(u => u.Users);

            modelBuilder.Entity<Post>().HasRequired(u => u.Users).WithMany(p=>p.Posts);
            modelBuilder.Entity<Post>().HasMany(t => t.Tags).WithMany(p => p.Posts);
            modelBuilder.Entity<Post>().HasOptional(c => c.Comments);


            modelBuilder.Entity<Comment>().HasRequired(u => u.Users);
            modelBuilder.Entity<Comment>().HasRequired(p => p.Posts);

            modelBuilder.Entity<Tag>().HasRequired(u => u.Users);
            modelBuilder.Entity<Tag>().HasMany(p => p.Posts).WithMany(t => t.Tags);

Модель - Пользователь

[ScaffoldColumn(true)]
        [Key]
        public int UserID { get; set; }

        [StringLength(15)]
        [DisplayName("First Name")]
        [Required(ErrorMessage="First Name is Required")]
        public string FirstName { get; set; }

        [StringLength(15)]
        [DisplayName("Last Name")]
        [Required(ErrorMessage = "Last Name is Required")]
        public string LastName { get; set; }

        [DataType(DataType.EmailAddress,ErrorMessage="please enter valid email")]
        [DisplayName("Email Address")]
        [Required(ErrorMessage = "Email is Required")]
        [Remote("CheckUniqueEmail","User",ErrorMessage="An account with this email address already exists.")]
        public string Email { get; set; }

        [DataType(DataType.Password)]
        [Required(ErrorMessage = "Password is Required")]
        public string Password { get; set; }

        [DataType(DataType.Date)]
        [ScaffoldColumn(true)]
        public DateTime JoiningDate { get; set; }

        [DataType(DataType.Date)]
        [ScaffoldColumn(true)]
        public DateTime? LastActivityDate { get; set; }

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

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

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

Модель - Пост

[Key]
        [ScaffoldColumn(true)]
        public int PostID { get; set; }

        [Required(ErrorMessage="Required")]
        [StringLength(250)]
        public string Title { get; set; }

        [Required(ErrorMessage="Required")]
        [DataType(DataType.MultilineText)]
        public string Body { get; set; }

        [DataType(DataType.Date)]
        public DateTime DateCreated { get; set; }

        [DataType(DataType.Date)]
        public DateTime DateModified { get; set; }

        [ScaffoldColumn(false)]
        public int UserID { get; set; }

        [ScaffoldColumn(false)]
        public int? CommentID { get; set; }

        [ScaffoldColumn(false)]
        public int? TagID { get; set; }

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

        public virtual User Users { get; set; }

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

Модель = Комментарий

[Key]
        [ScaffoldColumn(true)]
        public int CommentID { get; set; }

        [DisplayName("Your Comment")]
        public string Body { get; set; }

        [DataType(DataType.Date)]
        [ScaffoldColumn(true)]
        public DateTime DateCreated { get; set; }

        [ScaffoldColumn(true)]
        public int PostID { get; set; }

        [ScaffoldColumn(true)]
        public int UserID { get; set; }

        public User User { get; set; }

        public Post Posts { get; set; }

модель = тег

[Key]
        [ScaffoldColumn(true)]
        public int TagID { get; set; }

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

        [ScaffoldColumn(true)]
        public int UserID { get; set; }

        public User Users { get; set; }

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

1 Ответ

0 голосов
/ 13 сентября 2011

Вам нужно опубликовать свои модели здесь, чтобы перейти к более подробной информации. Но, как я вижу, есть несколько проблем с конфигурацией вашей модели.Как вы сказали,

1 comment can have 1 user, 1 post

так в чем же смысл сохранять совокупность пользователей в Comment

modelBuilder.Entity<Comment>().HasRequired(u => u.Users); 

это будет так

 modelBuilder.Entity<Comment>().HasRequired(u => u.User);

иэто также относится и к Post.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...