MVC-将文章数据插入数据库
本文关键字:插入 数据库 数据 文章 MVC- | 更新日期: 2023-09-27 18:29:33
我正在使用MVC,并创建了一个将值插入数据库的表单。
我的数据库结构有以下关系:
- 一个->多个
- 多->多
例如:"用户"表包含"公司"表的外键。在我看来,我有一个包含所有公司的下拉列表。
我可能需要的是一个使用外键将数据插入表的工作示例。我四处寻找并尝试了许多解决方案,但不知道如何使其发挥作用。
这是我的代码:
型号:
public class DefaultConnection : DbContext
{
public DefaultConnection()
: base("DefaultConnection")
{
}
public DbSet<User> users{ get; set; }
}
public class Company
{
public int Id { get; set; }
public string Name{ get; set; }
}
public class User
{
public int Id { get; set; }
[ForeignKey("Company")]
public int Id_Company { get; set; }
public Company Company{ get; set; }
}
视图模型:
public class MyViewModel
{
public MyViewModel()
{
this.u= new User();
this.cl = new Companylist(); <== another class which i have create a selectlist
}
public User u{ get; set; }
public Companylist cl{get;set;}
}
视图:
<ol>
<li>
@Html.LabelFor(m => m.cl.Ncompany)<br />
@Html.DropDownListFor(o => o.cl.Ncompany, Model.cl.Ncompany, "-- Select --", new { @class = "abc" })
</li>
<li>
@Html.LabelFor(m => m.u.Name)<br />
<input type="text" name="Name" value="" />
</li>
</ol>
控制器:
[HttpPost]
public ActionResult Create(MyViewModel model)
{
if (ModelState.IsValid)
{
db.users.Add(model);?????????????????
db.SaveChanges();
return RedirectToAction("Index");
}
return View(model);
}
首先,您的DropDownListFor的设置似乎不太正确,因为下拉列表是为User.Id_Company而不是为公司列表设置的。很可能应该是:
<li>
@Html.LabelFor(m => m.cl.Ncompany)<br />
@Html.DropDownListFor(o => o.u.Id_Company, Model.cl.Ncompany, "-- Select --", new { @class = "abc" })
</li>
接下来,在您的控制器中,您可以直接从返回的模型中插入,但在某个时候,您可能会退出使用域模型(DB表的模型),并开始使用视图模型。话虽如此,你可以添加一个新用户:
[HttpPost]
public ActionResult Create(MyViewModel model)
{
if (ModelState.IsValid)
{
var db = new DefaultConnection(); (?? is this what your context is called?)
db.users.Add(new User{
Id_Company = model.u.Id_Company,
Name = model.u.Name
});
db.SaveChanges();
return RedirectToAction("Index");
}
return View(model);
}
您的ViewModel
有一个Company
和User
。插入时需要将实体与数据库表实体匹配。
尝试这样做:
[HttpPost]
public ActionResult Create(MyViewModel model)
{
if (ModelState.IsValid)
{
db.users.Add(model.User);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(model);
}
使用外键插入表应该和其他插入一样。假设您有一个公司的数据库行,那么它运行时应该不会出现错误。
User user = new User
{
Id_Company = 1
}
db.users.Add(user);
db.SaveChanges();