1

我正在尝试填充我的数据库上下文,然后在循环结束时保存所有更改:

 foreach (var kommune in valgkreds.Value.SubAreas)
                    {

                        var komExist = dbConnection.Omraade.FirstOrDefault(x => x.Id == kommune.Value.Id);

                        if (komExist == null)
                        {
                            Omraade k = new Omraade();
                            k.Id = kommune.Value.Id;
                            k.titel = kommune.Value.Name;
                            k.type_id = 3;
                            dbConnection.Omraade.Add(k);

                            Krydstabel_Omraade ko_kommune = new Krydstabel_Omraade();
                            ko_kommune.parent = valgkreds.Value.Id;
                            ko_kommune.child = kommune.Value.Id;

                            dbConnection.Krydstabel_Omraade.Add(ko_kommune);

                            Console.WriteLine(k.Id);
                            //Console.WriteLine(++i);
                        }
}

我正在检查我是否已经使用以下行将对象添加到上下文中:

var komExist = dbConnection.Omraade.FirstOrDefault(x => x.Id == kommune.Value.Id);

null即使已添加对象,它也始终返回。我猜这是因为它还没有保存到数据库中。在执行该方法之前,如何检查它是否在上下文中SaveChanges()

4

1 回答 1

1

如果您使用的是 EF 4.1+,它们包含一个“查找”方法,允许您在上下文中追踪尚未持久化到数据库的对象-

http://msdn.microsoft.com/en-US/data/jj573936

尽管看起来这仅在您使用主键进行搜索时才有效。

于 2012-11-21T10:17:06.023 回答