DbContext, Entity Framework 6, запрос для объекта, добавленного в текущем сеансе

#c# #entity-framework-6

#c# #entity-framework-6

Вопрос:

Я использую Entity Framework 6, у меня есть звездообразная сущность, и я имею дело со следующим простым кодом:

                       foreach(var name in names)
                      {
                        Star star = context.Stars
                            .Where(st => st.Name == name)
                            .FirstOrDefault();

                        if (star == null)
                        {
                            star = new Star();
                            star.Name = name;
                            context.Stars.Add(star);

                            star = context.Stars
                                .Where(st => st.Name == name)
                                .FirstOrDefault();

                            // Now it's NULL
                        }
                        }
  

Я хочу добавить в БД новую звезду, только если она еще не существует. К сожалению, последующие запросы к тому же контексту сеанса без SaveChanges() не могут найти объекты, добавленные в текущем сеансе.
Как я могу это решить? (Я не хочу сохранять его на каждом шаге).

Комментарии:

1. Я имел в виду context.SaveChanges(), а не saveAll()

2. Вы можете отредактировать свой Post и заменить saveAll на SaveChanges .

3. Какова ваша цель? Вы хотите получить именно элемент из состояния или просто хотите сделать пакетное добавление?

4. Посмотрите, что context.Stars.Local.FirstOrDefault(s=>s.Name == name) возвращается.

5. контекст.Звезды. Местные новости. FirstOrDefault() работает для меня, поэтому я должен проверить обе коллекции?