webForumDet fria alternativet

IRepository i MVC applikation

.NET

3 svar · 617 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

Tja,
Labbar mvc för fullt men har stött på en fundering.
Jag använder NHibernate i grunden för all databaskomunikation. Utanpå det har jag ett interface och ett generiskt repository med ett par vanliga metoder: Get<T>, Load<T>, Query<T> osv.
Nu undrar jag:
Är det ok/smart att exponera detta interface direkt i en mvc control eller ska man gömma det bakom ett ex. ICategoryRepository som i sin tur bara har de metoder som rör entiteten Category? Ex. GetCategory(int categoryID), GetCategories() osv.

Man blir ju sugen att exponera IRepositoriet direkt eftersom jag då jag kan köra vilken typ av selectsats jag vill, när jag vill, hur jag vill, i alla controller.

Vad har ni att säga om det? :stud

Medlem sedan juni 20003 076 inlägg
#2

Hmm, såg precis att ett interface kan ärva ett annat interface! Är det kanske det bästa av två världar tro?! :)
Då kan mitt ICategoryRepository ärva IRepository och därmed få tillgång till alla metoder som Repositoriet har. (detta för att CategoryRepository redan ärvde Repository sedan tidigare)

Medlem sedan juni 20003 076 inlägg
#3

Jag har typ exakt samma scenario som denna tråd:
http://stackoverflow.com/questions/2927465/a-c-generics-question-involving-controllers-and-repositories
Det verkar alltså som om att det är ett ok sätt att hantera det hela på.

Medlem sedan jan. 20023 327 inlägg
#4

Jag brukar implementera mina repositories på det viset. Att bara gå mot ett så kallat IRepository är inte så smart, eftersom det repositoryt är helt generellt och du då tappar styrkan med specialiserade repositorys. Risken är även att du får massa logik i dina kontroller (controllers), som egentligen borde ligga i dina repositories.

Du är på rätt väg med andra ord :)

259 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)