Как удалить сущность из коллекции без загрузки всех данных коллекции - PullRequest
2 голосов
/ 12 мая 2011

Модель Code-First:

public class Princess
{
    public int Id { get; set; }
    public virtual ICollection<Unicorn> Unicorns { get; set; }
}

public class Unicorn
{
    public int Id { get; set; }
    public virtual ICollection<Princess> Princesses { get; set; }
}

возможно ли удалить объект из коллекции без загрузки (нетерпеливых или ленивых) всех данных коллекции?

var princess = context.Princesses.Where(x => x.Id == 1).Single();
var unicorn = context.Unicorns.Where(x => x.Id == 1).Single();
princes.Unicorns.remove(unicorn); //load all assigned unicorns
context.SaveChanges();

Я думаю, что ExecuteSqlCommand должен работать. Другое решение?

1 Ответ

1 голос
/ 12 мая 2011

Используйте заглушки.С макушки головы (может потребоваться настройка):

var princess = new Princess { Id = 1 };
princess.Unicorns.Add(new Unicorn { Id = 1 });
context.Princesses.Attach(princess);  // start tracking changes
princes.Unicorns.Remove(unicorn);
context.SaveChanges();
...