在SubmitChanges之前来自LINQ-to-SQL的对象

时间:2011-01-18 11:56:47

标签: .net linq-to-sql

我最初将此作为对this question的回复发布,但意识到我应该问一个新问题。它似乎表明我应该能够做到以下几点:

int count = Db.Countries.Count();
Country newCountry = new Country{Name = "France"};
Db.Countries.InsertOnSubmit(c);
Country getCountry = Db.Countries.FirstOrDefault(x => x.Name == "France");
count = Db.Countries.Count();
Db.Countries.DeleteOnSubmit(c);
count = Db.Countries.Count();

但是,在空表中,count在调试器中一直保持0,执行后getCountrynull

我错过了什么?

1 个答案:

答案 0 :(得分:2)

LINQ-to-SQL位于数据库中的数据和本地保存的对象之间的虚拟世界中。此时,您尚未将更改提交到数据库(Db.SubmitChanges()) - 它们仅存在于本地。

Db.Countries.Count()在数据库中执行(即select COUNT(1) from Countries) - 所以答案是0。

尝试将本地增量与数据库世界结合起来是非常困难的(在一般情况下),所以简而言之:不要这样做。它不起作用。