【发布时间】:2019-09-05 16:19:11
【问题描述】:
在我的控制器的创建方法中,我需要在将对象实际添加到数据库之前进行检查。我需要做的就是检查是否已经有一个条目具有两个属性的重复值。
我目前的想法是做一个 sql 查询来选择这 2 个值与当前对象的 2 匹配的所有条目,如果此查询的计数为 => 1,则不将该对象添加到数据库中。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "id,name,winner,points,postDate")] Pick pick)
{
SqlConnection con = new SqlConnection();
SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Picks WHERE [score] = @score AND [winner] = @winner", con);
if (ModelState.IsValid && cmd.value == 0) //I know this is wrong but something like this
{
db.Picks.Add(pick);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(pick);
}
我需要知道的主要事情是:
- 我在查询中输入“Picks”的位置是数据库名还是表名?
- 在查询中,“[score]”是从数据库写入属性的正确方法,“@score”是引用您当前正在使用的对象的属性值的正确方法吗?
- 获取查询返回的条目数量的方法是什么?
【问题讨论】:
-
1. table 或某些 rdbms 可以是 database.table
-
这个项目设计不好,容易出现sql注入等问题。使用依赖注入引入服务和数据层
标签: c# sql asp.net-mvc controller