我正在開發一個asp.net mvc 5 web項目,並且我創建了一個Repository Model類來與我的數據庫進行交互,並且從我的操作方法。例如我的帖子編輯操作方法裏面我有下面的代碼: -從我的Controller操作方法傳遞對象到我的Repository方法
Repository repository = new Repository();
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(SecurityRole Role)
{
try
{
if (ModelState.IsValid)
{
repository.InsertOrUpdateRole(Role);
repository.Save();
return RedirectToAction("Index");
}
}}
這裏是倉庫模型CLAS: -
public class Repository
{
private TEntities tms = new TEntities();
public void InsertOrUpdateRole(SecurityRole role)
{
role.Name = role.Name.Trim();
if (role.SecurityRoleID == default(int))
{
// New entity
//Code goes here
else
{
t.Entry(role).State = EntityState.Modified;
}
}
所以我的問題是,當我從我的行動傳遞對象方法到我的倉庫,實體框架將如何處理對象;它會在存儲庫中創建另一個副本,還是會跟蹤同一個對象?如果實體框架將在動作方法內部和會話中的存儲庫方法內部處理同一對象,那麼實體框架如何跟蹤對象?
第二個問題,最好的方法是什麼;通過從操作方法到倉庫的整個對象(如我目前做的),或而不是隻通過對象ID,並再次檢索庫模型的東西如下里面的對象: -
repository.InsertOrUpdateRole(Role.RoleID);
和存儲庫裏面
public void InsertOrUpdateRole(int id)
{
var SecurityRole = t.SecurityRoles.SingleOrDefault(a => a.SecurityRoleID == role.SecurityRoleID);
}
所以在這種情況下,角色對象在從存儲庫或操作方法訪問時是相同的?它是否正確 ? – 2014-10-28 13:43:48
如果您將角色對象從操作方法傳遞到存儲庫,則確實如此。 – Marthijn 2014-10-28 14:09:58
因此,如果我修改存儲庫中的角色屬性之一,我可以使用它insdie操作方法? – 2014-10-28 14:37:17