Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C在实体框架中保存更改之前,如何删除新添加的记录_C#_Sql Server_Entity Framework_Linq - Fatal编程技术网

C# C在实体框架中保存更改之前,如何删除新添加的记录

C# C在实体框架中保存更改之前,如何删除新添加的记录,c#,sql-server,entity-framework,linq,C#,Sql Server,Entity Framework,Linq,我有一个带有标识键的表,我需要用户在单击“保存”按钮和该按钮运行“保存更改”功能之前可以添加新记录或删除添加的记录,并且所有更改都将被保存 或者,如何访问要删除的新添加记录的ID 更新: 我的表单有一个列表框控件和两个添加和删除按钮 单击add按钮打开另一个表单,该表单包含从数据库绑定的附件列表,用户可以从列表中选择任何人 MobileEntities database = new MobileEntities(); tblDeviceAccessory tblDeviceAccess = ne

我有一个带有标识键的表,我需要用户在单击“保存”按钮和该按钮运行“保存更改”功能之前可以添加新记录或删除添加的记录,并且所有更改都将被保存

或者,如何访问要删除的新添加记录的ID

更新:

我的表单有一个列表框控件和两个添加和删除按钮

单击add按钮打开另一个表单,该表单包含从数据库绑定的附件列表,用户可以从列表中选择任何人

MobileEntities database = new MobileEntities();
tblDeviceAccessory tblDeviceAccess = new tblDeviceAccessory();

tblDeviceAccess.accessory_id = Convert.ToInt16(iHadiTextValues.listAccessoryId); //Selected item id in Accessories list

database.tblDeviceAccessories.Add(tblDeviceAccess);
int accessoryId = tblDeviceAccess.id; //this value is 0 because not run saveChanges() 

listAccessory.Items.Add(new ListItem { Name = iHadiTextValues.listAccessoryName, Value = accessoryId });
选择所选项目的id和文本后,将添加到listboxcontrol项目和数据库表中,但不保存

然后单击save按钮,SaveChanges功能将运行,所有更改都将保存在数据库中


单击“删除”按钮上的“保存更改”之前,如何删除tblDeviceAccessories表中添加的项目?

保存更改之前的所有更改保存到内存中 您可以在保存更改之前使用数据! 但您需要Singlton模式来创建DbContext的1个实例并在表单中使用 但是,当关闭或单击“保存”按钮调用“在Db上下文上保存更改”,然后在数据库中保存所有更改时,

当调用Add方法时,对象将以添加状态添加到本地集合

因此,您可以按如下方式删除它们:

foreach (var entity in database.tblDeviceAccessories.Local)
{
    var entry = context.Entry(entity);

    if (entry.State == EntityState.Added)
        entry.State = EntityState.Detached;                    
}

之后,您可以安全地调用SaveChanges方法。

用以下代码解决:

int selectedValue = Convert.ToInt16(((ListItem)listAccessory.SelectedItem).Value);
var foundItem = context.tblDeviceAccessories.Local.SingleOrDefault(a => a.accessory_id == selectedValue);
context.tblDeviceAccessories.Local.Remove(foundItem);

谢谢

不要只是重新发布一个已关闭和已删除的问题。相反,改进它并投票重新开放。你的问题不清楚,你拒绝回复对原始问题的评论。对我来说,问题似乎只是如何从列表框中删除项目,它与实体框架和保存更改无关。@GertArnold我很抱歉我的朋友,因为我是stackoverflow的新手,请原谅我的坏问题。我的意思是,如何才能在保存之前删除表中新添加的记录?@GertArnold请帮我重新打开我原来的问题好吧,暂时别说了。尝试澄清您的问题。您应该将新的ListItem.Value设置为tblDeviceAccess。然后你可以从ListAccessority.SelectedValue中获取它并将其从数据集中删除亲爱的,我需要删除特定添加的对象。有什么想法吗?例如,如果用户添加了电池和sim卡,那么如何通过特定id删除电池或任何东西。Local是我想要的,但是如何访问Local中添加的对象并删除每个对象?Local是我想要的,但是如何访问Local中添加的对象并删除每个对象?