这是我的名为'AssignedExercises'的数据库表:
我正在尝试删除此值:
这是我的代码......
var b = db.AssignedExercises.Where(m => m.Data_UserID.Equals(3)).FirstOrDefault();
db.AssignedExercises.Remove(b);
db.SaveChanges();
但它会删除整行。我该怎么改变它?
谢谢!
答案 0 :(得分:3)
您正在明确删除由 实体对象 表示的 行 。另一方面, 列 由对象上的 属性 表示。因此,您需要更新对象本身的属性。此外,您可以直接使用FirstOrDefault()
... Where()
是多余的。
var b = db.AssignedExercises.FirstOrDefault(m => m.Data_UserID.Equals(3));
if (b != null)
b.Monday = null;
db.SaveChanges();
答案 1 :(得分:2)
我假设您要清除值,而不是"删除单元格"?你无法真正删除这个细胞"因为它由列"星期一"表示。那么对于那一行,你可以清除值(例如设置为NULL或空字符串?)。如果你要"删除"它,你将删除所有行的整个列。
我会这样做:
var b = db.AssignedExercises.Where(m =>m.Data_UserID.Equals(3)).FirstOrDefault();
b.Monday = ""; // if you want empty string, or set to DbNull
db.SaveChanges();
答案 2 :(得分:1)
这是预期的行为。您可以使用以下方式编辑值:
b.Monday = null;
然后致电
db.SaveChanges();
答案 3 :(得分:1)
您必须更新值而不是使用删除。正如您所发现的那样删除该行。
var b = db.AssignedExercises.Where(m => m.Data_UserID.Equals(3)).FirstOrDefault();
b.Monday = NULL; //or DbNull if you need to
db.SaveChanges();