Zabrakło mi trochę problemu z EF poszukuje najlepszych praktyk dla tego problemu:jednostka pracy, Entity Framework DBContext Zakres
public void TestEntityFramework_UOWImplementation()
{
using (UnitOfWorkInventory uow = new UnitOfWorkInventory())
{
IMaterialRepository repos = new MaterialRepository(uow);
Material mat = GetMaterial("Mikes Material", 1);
mat.CostPrice = 20;
repos.InsertOrUpdate(mat);
uow.Commit();
}
}
private Material GetMaterial(string sku, int clientId)
{
IMaterialRepository repos = new MaterialRepository(new UnitOfWorkInventory();
return repos.Find(sku, clientId);
}
W metodzie TestEntityFramework_UOWImplementation(), jego porządku, zadzwoń, stwórz zakres mojej jednostki pracy ... i utwórz w niej repozytorium.
Ale kiedy chcę uzyskaćMaterials() jak poniżej .. Nie mam dostępu do jednostki pracy lub repozytorium, chyba że faktycznie przekazać go jako parametr! To zdecydowanie nie jest szczególnie miłe.
Jak ludzie radzą sobie z tym problemem?
Z góry dziękuję!
Neil
Gdyby nie 'GetMaterial' być metoda przykład w Klasa "MaterialRepository"? –
to dobry punkt! :), ale mówię, że był jakiś jeden przypadek, w którym chciałbyś zrobić Where() .. przypuszczam, że byłyby one również w repozytorium. Dzięki! teraz, kiedy widzę, że to jest napisane w sposób oczywisty :) –
Właściwie, powiedzmy, że było kilka zapytań repo. czy nie sądzisz, że kiedykolwiek miałby miejsce przypadek, w którym kwerendy byłyby wykonywane poza repozytorium? Powiedzmy, że miałem metodę o nazwie CalculateMaterialPrices(), która wymagała listy materiałów do obliczenia.Czy możesz nazwać metodę repo GetMaterials() w metodzie TestEntityFramework_UOWImplementation() lub w metodzie CalculateMaterialPrices(), jeśli to drugie, w jaki sposób uzyskasz dostęp do repo? czy nie jestem tu na dobrej drodze! –