删除行ASP.NET MVC ADO.NET实体模型

时间:2014-07-17 10:00:35

标签: c# asp.net asp.net-mvc entity-framework ado.net

我是asp.net MVC环境的新手

我正在尝试从3个表/实体中删除ROW(因为我使用ado.net实体数据模型自动生成数据库)问题是当我的删除功能被执行时,只删除了来自1个表的ROW。

PS:我也已经创建了3个表

之间的关系

这是我的控制器:

    [HttpPost, ActionName("Delete")]
    [ValidateAntiForgeryToken]
    public ActionResult DeleteConfirmed(int id)
    {
        // i've edited this code, i think the problem lies in this code bellow
        // start edited code
        ms_student ms_student = db.ms_student
             .Include(i => i.ms_person) 
             .Include(i => i.ms_person.ms_user)
             .Where(i => i.user_id_student == id)
             .Single(); 
        // end edited code

        db.ms_student.Remove(ms_student);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

这是我的ms_user模型:

namespace test.Models
{
    using System;
    using System.Collections.Generic;

    public partial class ms_user
    {
        public int ID { get; set; }
        public string password { get; set; }
        public string salt { get; set; }
        public Nullable<int> administrative_type_id { get; set; }
        public string email_login { get; set; }

        public virtual ms_person ms_person { get; set; }
    }
}

这是ms_person模型:

namespace test.Models
{
    using System;
    using System.Collections.Generic;

    public partial class ms_person
    {  
        public int ID { get; set; }
        public Nullable<int> family_id { get; set; }
        public string first_name { get; set; }
        public string last_name { get; set; }
        public string email { get; set; }
        public string address { get; set; }
        public string phone_address { get; set; }
        public string mobile_phone_number { get; set; }
        public string gender { get; set; }
        public Nullable<System.DateTime> date_of_bith { get; set; }
        public Nullable<System.DateTime> date_start { get; set; }
        public Nullable<System.DateTime> date_end { get; set; }
        public string status { get; set; }
        public string identification_ID { get; set; }
        public string passport { get; set; }
        public Nullable<int> user_type_id { get; set; }
        public string file_image { get; set; }

        public virtual ms_student ms_student { get; set; }
        public virtual ms_user ms_user { get; set; }

    }
}

最后我的ms_person模型:

namespace test.Models
{
    using System;
    using System.Collections.Generic;

    public partial class ms_student
    {
        public int user_id_student { get; set; }
        public int student_code { get; set; }
        public int course_id { get; set; }
        public string degree { get; set; }
        public Nullable<int> current_semester { get; set; }
        public string cuti_session { get; set; }

        public virtual ms_person ms_person { get; set; }
    }
}

只是你知道模型代码是自动生成的,我使用的是ado.net实体模型,删除的唯一表/实体只是ms_student表(对不起,我有点混淆命名:模型或实体或表)

ms_person上的ID是自动增量PK ms_user上的ID实际上是FK也是ms_person的PK 而且(对于不同的命名我愚蠢)user_id_student实际上FK也是ms_person的PK

非常感谢

2 个答案:

答案 0 :(得分:1)

您还想删除ms_person和ms_user吗?

这样做。

db.ms_student.Remove(ms_student);
if (ms_student.ms_person != null)
{
   db.ms_person.Remove(ms_student.ms_person);
   if (ms_student.ms_person.ms_user != null)
   {
      db.ms_user.Remove(ms_student.ms_person.ms_user);
   }
}
db.SaveChanges();

答案 1 :(得分:0)

[HttpGet]
public ActionResult DeleteFacilitator( Int64 FacID)
{
  if(FacID == null)
  {
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
  }
  var Resul= db.NFE_Facilitator.Find(ID);
  if(Resul==null)
  {
      return HttpNotFound();
  }
      return View(Resul);
}
[HttpPost,ActionName("DeleteFacilitator")]
public ActionResult DeleteConfirmed( Int64 ID)
{
   var Resul= db.NFE_Facilitator.Find(ID);
   db.NFE_Facilitator.Remove(Resul);
   db.SaveChanges();
   return RedirectToAction("SearchFacilitator");
}