使用EntityFramework删除单元格值

时间:2017-01-17 19:50:18

标签: c# entity-framework

这是我的名为'AssignedExercises'的数据库表:

enter image description here

我正在尝试删除此值:

<code>enter image description here</code>

这是我的代码......

var b = db.AssignedExercises.Where(m => m.Data_UserID.Equals(3)).FirstOrDefault();
db.AssignedExercises.Remove(b);
db.SaveChanges();

但它会删除整行。我该怎么改变它?

谢谢!

4 个答案:

答案 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)

我假设您要清除值,而不是&#34;删除单元格&#34;?你无法真正删除这个细胞&#34;因为它由列&#34;星期一&#34;表示。那么对于那一行,你可以清除值(例如设置为NULL或空字符串?)。如果你要&#34;删除&#34;它,你将删除所有行的整个列。

我会这样做:

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();