Entity Framework 4 - STE - prosty DB z pojedynczych blogów tablica zawierająca kolumnę BlogID PK ...Czy Entity Framework ObjectContext poprawnie implementuje wzór Unit of Work?
var samplesDbEntities = new SamplesDBEntities();
var blogId = Guid.NewGuid();
samplesDbEntities.Blogs.AddObject(new Blog() { BlogID = blogId });
var objectSetResult = samplesDbEntities.Blogs
.Where(p => p.BlogID == blogId)
.SingleOrDefault();
(wynik wykonania kodu => objectSetResult == null po ostatnim wierszu)
AFAIK, ObjectContext jest implementacją wzoru UoW iw takim przypadku myślę, że powinienem otrzymać wynik z powrotem z ObjectSet (Repository) po prostu "oznaczony jako przejściowy" Czy ktoś może mi wyjaśnić, co robię źle i dlaczego objectSetResult ma tutaj zerową wartość ?
(Tak, jestem świadomy ObjectStateManager, ale dla mnie to jest bardziej patch do wspomnianego górnego problemu architektonicznego)
-1 cos to nie odpowiada na dokładne pytanie "Czy Entity Framework ObjectContext jest prawidłową implementacją wzorca Unit of Work?" – Restuta
Wystarczająco fair. Zobacz zaktualizowaną odpowiedź. – Yakimych
Moim przypadkiem użycia jest to, że jednostka jest dodawana i pobierana przed pojawieniem się trwałości - jaki jest sens UoW, jeśli muszę utrzymywać każdą jednostkę osobno, a nie wsadowo? Co do kodu aktualizacji, nie sądzisz, że fakt, że muszę wiedzieć, że potrzebuję używać ObjectStateManager jest zły (przeciekająca infrastruktura)? Nie w przypadku mojej trywialnej próbki, ale to "get" może wystąpić w zupełnie innym miejscu, gdzie nie wiedziałbym, czy coś jest dodane. Dlaczego nie zostanie to uwięzione wewnątrz samego obiektu OBjectSet (jak powinna robić UoW) i po prostu rozpoznane w czasie trwania? –