it-swarm.dev

حذف سجل واحد من إطار الكيان؟

لدي جدول SQL Server في Entity Framework باسم employ مع عمود مفتاح واحد باسم ID.

كيف يمكنني حذف سجل واحد من الجدول باستخدام Entity Framework؟

171
user2497476

ليس من الضروري الاستعلام عن الكائن أولاً ، يمكنك إرفاقه بالسياق بواسطة معرفه. مثله:

var employer = new Employ { Id = 1 };
ctx.Employ.Attach(employer);
ctx.Employ.Remove(employer);
ctx.SaveChanges();

بدلاً من ذلك ، يمكنك ضبط حالة الإدخال المرفقة على:

var employer = new Employ { Id = 1 };
ctx.Entry(employer).State = EntityState.Deleted;
ctx.SaveChanges();
324
mt_serg

يمكنك استخدام SingleOrDefault للحصول على كائن واحد مطابق للمعايير الخاصة بك ، ثم تمرير ذلك إلى طريقة Remove بجدول EF الخاص بك.

var itemToRemove = Context.Employ.SingleOrDefault(x => x.id == 1); //returns a single item.

if (itemToRemove != null) {
    Context.Employ.Remove(itemToRemove);
    Context.SaveChanges();
}
72
Mansfield
  var stud = (from s1 in entities.Students
            where s1.ID== student.ID
            select s1).SingleOrDefault();

  //Delete it from memory
  entities.DeleteObject(stud);
  //Save to database
  entities.SaveChanges();
13
Alex G
Employer employer = context.Employers.First(x => x.EmployerId == 1);

context.Customers.DeleteObject(employer);
context.SaveChanges();
8
Sam Leach

أنا باستخدام إطار الكيان مع LINQ. التعليمات البرمجية التالية كانت مفيدة بالنسبة لي.

1- لسجلات متعددة

 using (var dbContext = new Chat_ServerEntities())
 {
     var allRec= dbContext.myEntities;
     dbContext.myEntities.RemoveRange(allRec);
     dbContext.SaveChanges();
 }

2- للحصول على سجل واحد

 using (var dbContext = new Chat_ServerEntities())
 {
     var singleRec = dbContext.ChatUserConnections.FirstOrDefault( x => x.ID ==1);// object your want to delete
     dbContext.ChatUserConnections.Remove(singleRec);
     dbContext.SaveChanges();
 }
5
Baqer Naqvi

باستخدام Entity Framework 6 ، يمكنك استخدام Remove. كما أنه تكتيك جيد لاستخدامusingللتأكد من أن اتصالك مغلق.

using (var context = new EmployDbContext())
{
    Employ emp = context.Employ.Where(x => x.Id == id).Single<Employ>();
    context.Employ.Remove(emp);
    context.SaveChanges();
}
1
Gizmo

يمكنك أن تفعل ذلك ببساطة مثل هذا

   public ActionResult Delete(int? id)
    {
        using (var db = new RegistrationEntities())
        {
            Models.RegisterTable Obj = new Models.RegisterTable();
            Registration.DAL.RegisterDbTable personalDetail = db.RegisterDbTable.Find(id);
            if (personalDetail == null)
            {
                return HttpNotFound();
            }
            else
            {
                Obj.UserID = personalDetail.UserID;
                Obj.FirstName = personalDetail.FName;
                Obj.LastName = personalDetail.LName;
                Obj.City = personalDetail.City;

            }
            return View(Obj);
        }
    }


    [HttpPost, ActionName("Delete")]

    public ActionResult DeleteConfirmed(int? id)
    {
        using (var db = new RegistrationEntities())
        {
            Registration.DAL.RegisterDbTable personalDetail = db.RegisterDbTable.Find(id);
            db.RegisterDbTable.Remove(personalDetail);
            db.SaveChanges();
            return RedirectToAction("where u want it to redirect");
        }
    }

نموذج

 public class RegisterTable
{

    public int UserID
    { get; set; }


    public string FirstName
    { get; set; }


    public string LastName
    { get; set; }


    public string Password
    { get; set; }


    public string City
    { get; set; }

} 

عرض من الذي سوف نسميها

 <table class="table">
    <tr>
        <th>
            FirstName
        </th>
        <th>
            LastName
        </th>

        <th>
            City
        </th>
        <th></th>
    </tr>

    @foreach (var item in Model)
    {
        <tr>
            <td> @item.FirstName </td>
            <td> @item.LastName </td>
            <td> @item.City</td>
            <td>
                <a href="@Url.Action("Edit", "Registeration", new { id = item.UserID })">Edit</a> |
                <a href="@Url.Action("Details", "Registeration", new { id = item.UserID })">Details</a> |
                <a href="@Url.Action("Delete", "Registeration", new { id = item.UserID })">Delete</a>

            </td>
        </tr>

    }

</table>

آمل أن يكون هذا سهلا بالنسبة لك لفهم

1
Sikander Iqbal

باستخدام EntityFramework.Plus يمكن أن يكون خيارًا:

dbContext.Employ.Where(e => e.Id == 1).Delete();

المزيد من الأمثلة متاحة هنا

0
Mohammad Reza Sadreddini

ل DAO عام عملي أخيرا هذا:

    public void Detele(T entity)
    {
        db.Entry(entity).State = EntityState.Deleted;
        db.SaveChanges();
    }
0
Tom Trnka
    [HttpPost]
    public JsonResult DeleteCotnact(int id)
    {
        using (MycasedbEntities dbde = new MycasedbEntities())
        {
            Contact rowcontact = (from c in dbde.Contact
                                     where c.Id == id
                                     select c).FirstOrDefault();

            dbde.Contact.Remove(rowcontact);
            dbde.SaveChanges();

            return Json(id);
        }
    }

ما رأيك في هذا ، بسيط أم لا ، يمكنك أيضًا تجربة هذا:

        var productrow = cnn.Product.Find(id);
        cnn.Product.Remove(productrow);
        cnn.SaveChanges();
0
Namroy

يمكنك القيام بشيء كهذا في حدث النقر أو celldoubleclick لشبكتك (إذا استخدمت واحدة)

if(dgEmp.CurrentRow.Index != -1)
 {
    employ.Id = (Int32)dgEmp.CurrentRow.Cells["Id"].Value;
    //Some other stuff here
 }

ثم قم بعمل شيء كهذا في زر الحذف:

using(Context context = new Context())
{
     var entry = context.Entry(employ);
     if(entry.State == EntityState.Detached)
     {
        //Attached it since the record is already being tracked
        context.Employee.Attach(employ);
     }                             
     //Use Remove method to remove it virtually from the memory               
     context.Employee.Remove(employ);
     //Finally, execute SaveChanges method to finalized the delete command 
     //to the actual table
     context.SaveChanges();

     //Some stuff here
}

بدلاً من ذلك ، يمكنك استخدام استعلام LINQ بدلاً من استخدام LINQ To Entities Query:

var query = (from emp in db.Employee
where emp.Id == employ.Id
select emp).Single();

employ.Id يستخدم كمعلمة تصفية والتي تم تمريرها بالفعل من الحدث CellDoubleClick الخاص بك DataGridView.

0
arvin aquio