我尝试了以下内容:
var itemtoremove = db.ItemGroups.Single(x => x.ID == _id);
if (itemtoremove != null)
{
db.ItemGroups.Remove(itemtoremove);
db.SaveChanges();
}
查询“有效”但删除了多行!有任何想法吗?表本身是一组或非常糟糕的表的一部分,但我必须使用它们。 桌子上有多个键会影响EF的作用吗?
谢谢大家。
答案 0 :(得分:2)
如果enitity具有导航属性而您尚未设置CascadeOnDelete(false);您可以删除多个项目。
//check item group for duplicates (just as a test)
var items = db.ItemGroups.Where(x => x.ID == _id); //breakpoint here to make sure there is only one match. If there is only one then you are deleting a linked item to the entity you are deleting.
var itemtoremove = db.ItemGroups.Single(x => x.ID == _id);
if (itemtoremove != null)
{
db.ItemGroups.Remove(itemtoremove);
db.SaveChanges();
}
答案 1 :(得分:0)
我找到了一个决议。 我认为桌面上有两个PK的设置(两个都在CHAR字段上)导致EF混淆。该表可以追溯到几年,它是一组表格的一部分,这些表格彼此无关。这很差,但这是另一个故事!
所以,我从头再次开始:
以原始格式重新导入表后,我执行了以下操作:
刷新我的EF模型以包含:
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
现在,只有在应用SaveChanges时才会删除一行。
感谢您的建议!