簡體   English   中英

使用實體框架4刪除對象的最簡單方法

[英]Simplest Way to Delete Object with Entity Framework 4

確認! 我是Entity Framework的新手,我正在嘗試找到刪除項目的最簡單方法。

我有一個列表框,數據源設置為數據庫中的TagCategory對象。 這工作正常。 現在我想刪除所選項目。 所以我這樣做:

TagCategory category = (TagCategory)lstCategories.SelectedItem;
using (MyEntities context = new MyEntities())
{
    context.AttachTo("TagCategories", category);
    context.DeleteObject(category);
    context.SaveChanges();
}

這似乎很直接,但它不起作用。 沒有刪除任何內容,沒有錯誤消息,沒有。

所以我看到我可以做這樣的事情:

using (MyEntities context = new MyEntities())
{
    string cmd = String.Format("DELETE FROM TagCategory WHERE TagCatID=@ID",
        category.TagCatID));
    context.ExecuteStoreCommand(qry);
}

這似乎有效。 那么我只是去做有用的,或者實體框架4實際上能夠做到這一點?

編輯:沒關系。 事實上,我有另一個問題阻止代碼表單執行。 我發布的兩個片段似乎都運行正常。 我很抱歉。

您可以使用存根實體,如下所示:

using (var context = new MyEntities())
{
     var tagCategory = new TagCategory
     {
         PostId = category.TagCatID
     };
     context.TagCategories.Attach(tagCategory);
     context.DeleteObject(tagCategory);
     context.SaveChanges();
}

我不確定你可以使用AttachTo() 取決於你如何填充ListBox。

什么應該工作:

  var Key = context.CreateEntityKey("TagCategory", category);
  Object original;
  if (context.TryGetObjectByKey(Key, out original))
  {
        context.DeleteObject(original);
        context.SaveChanges();
  }
// using the Find method of DBContext to retrieve the record you wish to delete
// works for me
// below code taken from a working WPF application using sdf database 

if (this.TransactionsDataGrid.SelectedIndex > -1)
{
    Transaction transaction = this.TransactionsDataGrid.SelectedItem as Transaction;
    if (transaction != null)
    {
        using (BilliEntities context = new BilliEntities())
        {
           try
           {
               Transaction trans = context.Transactions.Find(transaction.TransactionId);
               if (trans != null)
               {
                   // observable collection for datagrid
                   this.Transactions.Remove(transaction);
                   context.Transactions.Remove(trans);
                   context.SaveChanges();
               }
           }
           catch (Exception ex)
           {
              // for debugging
           }
        }
     }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM