Frage

Schnell Q für Sie Muster Experten da draußen.

Ich mag ein Repository-Muster, das von dem tatsächlichen Datenzugriff Tech abgekoppelt ist, da ich nicht auf, dass noch nicht entschieden habe, und ich will es, flexibel sein. Also, das L2S sein könnte, L2E, NHibernate, Lightspeed oder nichts.

Aber ich bin immer verwirrt über diese UnitOfWork Sache.

In der L2S Welt scheint dies Ihr Datacontext zu sein.

Aber was ist mit einer nicht-L2S Welt, denke ich, war handgeschriebener SQL zum Beispiel verwendet wird.

Meine Frage ist, wer macht was? In meinem Repo.Save () -Methode, sollte dies die UnitOfWork.Commit aufrufen, die dann die gewünschte INSERT erzeugt / UPDATE SQL?

keine definitive Antwort zu erwarten, aber einige Diskussion wäre gut, nur um sicherzustellen, dass ich auf dem richtigen Weg bin!

Danke

War es hilfreich?

Lösung

Repositorys kann sicherlich commit / speichern / auf der Arbeitseinheit Gegenstand einreichen, oder sie könnten dies dem Verbraucher überlassen. Ich ziehe das letztere Szenario, da es dem Verbraucher ermöglicht, die Lebensdauer der Arbeitseinheit Instanz gesteuert werden, die den Verbraucher ermöglicht mehrere Repositories engagieren:

// outside the repository layer
// int productId defined elsewhere
// int quantity defined elsewhere

IUnitOfWork unitOfWork = ... instantiate/get a new instance of your DataContext ...

ProductRepository productRepository = new ProductRepository(unitOfWork);
Product product = productRepository.GetById(productId);

Order order = new Order();
order.AddOrderLine(product, quantity);

OrderRepository orderRepository = new OrderRepository(unitOfWork);
orderRepository.Add(order);

unitOfWork.Save(); // This calls SubmitChanges() on the DataContext
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top