Это мой первый раз, когда я использую 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>
вам не хватает db.SaveChanges после db.Posts.Add – hdrdiab