2016-11-25 3 views
0

Это мой первый раз, когда я использую EF, и я ударяю головой об этом больше, чем должен.Невозможно вставить в мою базу данных

В принципе, я просто пытаюсь добавить запись в базу данных с использованием формы отправки в представлении и метода создания в контроллере.

Так в основном, у меня есть очень базовая модель и контроллер с Create методом

Вот код:

Модель с DbContext:

using System.Data.Entity; 

namespace class_project.Models 
{ 
    public class Post 
    { 
     public int PostId { get; set; } 
     [Required(ErrorMessage = "no!")] 
     public string Title { get; set; } 
     [Required(ErrorMessage = "no!")] 
     public string Content { get; set; } 

     public Post(int PostId, string Title, string Content) 
     { 
      this.PostId = PostId; 
      this.Title = Title; 
      this.Content = Content; 
     } 

     public Post() 
     { } 

     public class PostContext : DbContext 
     { 
      public DbSet<Post> Posts { get; set; } 
     } 
    } 
} 

Контроллер:

using static class_project.Models.Post; // I AM NOT SURE ABOUT THIS PART, BUT IT WAS ABLE TO BUILD WHEN ADDED IT. 

namespace class_project.Controllers 
{ 
    public class PostsController : Controller 
    { 
     private PostContext db = new PostContext(); 

     public ActionResult Create(Post obj) 
     { 
      if (!ModelState.IsValid) 
      { 
       return View(obj); 
      } 

      db.Posts.Add(obj); 

      return RedirectToAction("Index", "Posts"); 
     } 
    } 
} 

И мой View является стандартным автогенерированным Create с двумя полями ввода (я предполагаю, что идентификатор генерируется из db) на основе модели.

@model class_project.Models.Post 

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     <h4>Post</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="form-group"> 
      @Html.LabelFor(model => model.Title, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.Content, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.Content, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.Content, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Create" class="btn btn-default" /> 
      </div> 
     </div> 
    </div> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 
+2

вам не хватает db.SaveChanges после db.Posts.Add – hdrdiab

ответ

Смежные вопросы