编辑: 我为每个模态创建了CRUD函数,现在我尝试获取最近的Inserted Id并在不同的视图中使用它。 这是我到目前为止所尝试的内容
我为每个ContextEntities数据库创建了两个用于CRUD函数的类(基于层),以实现纯OOP递归方法,以下是代码。
ViolatorDB
public class ViolatorDB
{
private TPCAEntities db;
public ViolatorDB()
{
db = new TPCAEntities();
}
public IEnumerable<tbl_Violator> GetALL()
{
return db.tbl_Violator.ToList();
}
public tbl_Violator GetByID(int id)
{
return db.tbl_Violator.Find(id);
}
public void Insert(tbl_Violator Violator)
{
db.tbl_Violator.Add(Violator);
Save();
}
public void Delete(int id)
{
tbl_Violator Violator = db.tbl_Violator.Find(id);
db.tbl_Violator.Remove(Violator);
Save();
}
public void Update(tbl_Violator Violator)
{
db.Entry(Violator).State = EntityState.Modified;
Save();
}
public void Save()
{
db.SaveChanges();
}
}
ViolatorBs
public class ViolatorBs
{
private ViolatorDB objDb;
public ViolatorBs()
{
objDb = new ViolatorDB();
}
public IEnumerable<tbl_Violator> GetALL()
{
return objDb.GetALL();
}
public tbl_Violator GetByID(int id)
{
return objDb.GetByID(id);
}
public void Insert(tbl_Violator Violator)
{
objDb.Insert(Violator);
}
public void Delete(int id)
{
objDb.Delete(id);
}
public void Update(tbl_Violator Vioaltor)
{
objDb.Update(Vioaltor);
}
}
最后在表示层中使用逻辑层功能。插入执行如下:
public class CreateViolatorController : Controller
{
public TPCAEntities db = new TPCAEntities();
private ViolatorBs objBs;
public CreateViolatorController()
{
objBs = new ViolatorBs();
}
public ActionResult Index()
{
var voilator = new tbl_Violator();
voilator=db.tbl_Violator.Add(voilator);
ViewBag.id = voilator.VID;
return View();
}
[HttpPost]
public ActionResult Create(tbl_Violator Violator)
{
try
{
if (ModelState.IsValid)
{
objBs.Insert(Violator);
TempData["Msg"] = "Violator Created successfully";
return RedirectToAction("Index");
}
else
{
return View("Index");
}
}
catch (Exception ex)
{
TempData["Msg"] = "Failed..." + ex.Message + " " + ex.ToString();
return RedirectToAction("Index");
}
}
}
现在主要部分是如何在执行插入时在另一个名为 Dues 的控制器中获取perticuller插入ID?
在sqlqery中我会使用@@ IDENTITY,但在实体框架中我不确定。 我是mvc框架的新手任何建议或帮助表示感谢提前感谢。
答案 0 :(得分:3)
保存数据库上下文后,id会自动由EF填充回您的实体。
例如。
using(var context = new DbContext())
{
var employee = new Employee(); //this has an id property
context.Employees.Add(employee);
context.SaveChanges();
var id = employee.id; // you will find the id here populated by EF
}
答案 1 :(得分:0)
您不需要添加和保存您的表,因为您已经在voilatorDB类中完成了这项操作,只需获取最后一个ID,如下所示
var id = yourTableName.Id;
db.yourTableName.find(id);
或者您可以使用VoilatorBs类函数
简单地编写一行代码GetbyID(id);