我最初将此作为对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
,执行后getCountry
为null
。
我错过了什么?
答案 0 :(得分:2)
LINQ-to-SQL位于数据库中的数据和本地保存的对象之间的虚拟世界中。此时,您尚未将更改提交到数据库(Db.SubmitChanges()
) - 它们仅存在于本地。
Db.Countries.Count()
在数据库中执行(即select COUNT(1) from Countries
) - 所以答案是0。
尝试将本地增量与数据库世界结合起来是非常困难的(在一般情况下),所以简而言之:不要这样做。它不起作用。