如何在EF上下文中保存对象并检查它是否存在,而不将其保存到数据库中?

时间:2012-11-21 09:53:04

标签: c# entity-framework

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

 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()方法之前,如何检查它是否在上下文中?

1 个答案:

答案 0 :(得分:1)

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

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

虽然看起来只有在使用主键进行搜索时才会起作用。