实体框架删除对象问题 [英] Entity Framework Delete Object Problem
问题描述
我收到的对象不能被删除,因为它在ObjectStateManager未找到。而删除对象。
下面是codeS;
//首先我填ListView控件。
私人无效Form1_Load的(对象发件人,EventArgs的)
{
FirebirdEntity ASA =新FirebirdEntity();
的ObjectQuery< NEW_TABLE> sorgu = asa.NEW_TABLE;
的foreach(在sorgu VAR项)
{
ListViewItem的名单=新的ListViewItem();
list.Text = item.AD;
list.SubItems.Add(item.SOYAD);
list.Tag =项目;
listView1.Items.Add(名单);
}
//不是让NEW_TABLE实体从列表视图的标签属性。
私人无效button3_Click(对象发件人,EventArgs的)
{
使用(FirebirdEntity arama =新FirebirdEntity())
{
NEW_TABLE德尔=(NEW_TABLE)listView1.SelectedItems [0] .TAG;
arama.DeleteObject(DEL);
arama.SaveChanges();
}}
您需要<一个href="http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.attach.aspx">attach对象到的ObjectContext
。尝试:
NEW_TABLE德尔=(NEW_TABLE)listView1.SelectedItems [0] .TAG;
arama.Attach(DEL);
arama.DeleteObject(DEL);
arama.SaveChanges();
附着物由的ObjectContext
跟踪。这是必要的,用于执行删除和更新。你可以阅读更多有关附加对象 MSDN上。
修改,以澄清安装/拆卸:
私人无效Form1_Load的(对象发件人,EventArgs的){
FirebirdEntity ASA =新FirebirdEntity();
的ObjectQuery&LT; NEW_TABLE&GT; sorgu = asa.NEW_TABLE;
的foreach(在sorgu VAR项){
asa.Detach(项目);
//添加到ListView1的
}
}
此外,你应该使用块包住使用的ObjectContext
S的。
i am getting "The object cannot be deleted because it was not found in the ObjectStateManager". while Deleting object.
here is codes ;
//first i am filling listview control.
private void Form1_Load(object sender, EventArgs e)
{
FirebirdEntity asa = new FirebirdEntity();
ObjectQuery<NEW_TABLE> sorgu = asa.NEW_TABLE;
foreach (var item in sorgu)
{
ListViewItem list = new ListViewItem();
list.Text = item.AD;
list.SubItems.Add(item.SOYAD);
list.Tag = item;
listView1.Items.Add(list);
}
//than getting New_table entity from listview's tag property.
private void button3_Click(object sender, EventArgs e)
{
using (FirebirdEntity arama = new FirebirdEntity())
{
NEW_TABLE del = (NEW_TABLE)listView1.SelectedItems[0].Tag;
arama.DeleteObject(del);
arama.SaveChanges();
}}
You need to attach the object to the ObjectContext
. Try:
NEW_TABLE del = (NEW_TABLE)listView1.SelectedItems[0].Tag;
arama.Attach(del);
arama.DeleteObject(del);
arama.SaveChanges();
Attached objects are tracked by the ObjectContext
. This is needed for performing deletes and updates. You can read more about attaching objects on MSDN.
Edit to clarify attach/detach:
private void Form1_Load(object sender, EventArgs e) {
FirebirdEntity asa = new FirebirdEntity();
ObjectQuery<NEW_TABLE> sorgu = asa.NEW_TABLE;
foreach (var item in sorgu) {
asa.Detach(item);
// add to listView1
}
}
Also, you should wrap your use of ObjectContext
s in using
blocks.
这篇关于实体框架删除对象问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!