Właśnie zacząłem używać Entity Framework zamiast normalnego NHiberante, aby zobaczyć, jak działa EF i jak dotąd mam wiele problemów, ale jeden w szczególności oddziela obiekt i utrzymuje powiązane obiekty podrzędne.
Kupiłem książkę O'Reilly Entity Framework, która mówi, że "tak struktura obiektu domyślnie nie zachowuje wykresu obiektu po oderwaniu", ale nie pokazuje, jak zachować wykres! Dzięki O'Reilly to naprawdę przydatne.Entity Framework - Odłącz i zatrzymaj obiektowy wykres
W każdym razie, jeśli ktoś może pomóc, że byłoby świetnie, kod poniżej:
using (var creativeWorkshopEntities = new CreativeWorkshopEntities())
{
var q = from c in creativeWorkshopEntities.Job.Include("Files")
where c.Id == jobId
select c;
var job = q.First();
creativeWorkshopEntities.Detach(job);
return job;
}
Dzięki!
Dan
to świetnie dzięki Alex MergeOption zrobić lewę dla ale problem jest bez odłączyć mój metoda aktualizacji nie działa, w każdym razie dookoła tego? przy użyciu (var creativeWorkshopEntities = new CreativeWorkshopEntities()) { if (job.Id> 0) creativeWorkshopEntities.AttachUpdated (zadanie); // niestandardowa metoda ekstensora else creativeWorkshopEntities.AddToJob (zadanie); creativeWorkshopEntities.SaveChanges(); } –
Musisz użyć ApplyPropertyChanges (...) przekazując zaktualizowaną encję. ApplyPropertyChanges (updated) kopiuje wartości z "zaktualizowanego" obiektu do oryginalnego obiektu. Aby to działało, oryginalna encja musi znajdować się w kontekście, albo dlatego, że zatrzymałeś kopię i ją załączyłeś (zalecane), albo dlatego, że wykonałeś zapytanie, aby ponownie załadować ją z bazy danych. –
Czy istnieje sposób, aby zapobiec rozdrobnieniu wykresu encji? Dlaczego odłączyć wdrażanie w ten sposób? – Den