#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() работает для меня, поэтому я должен проверить обе коллекции?