System.Collections.Generic.KeyNotFoundException: Dany klucz nie był obecny w słowniku.
...
W śladzie stosu nie było też dużo lepszych informacji o genezie błędu. Ale do tego każdy programista powinien się do pewnego stopnia przyzwyczaić ;)
Po dokładniejszej analizie okazało się, że chociaż parsowania plików mapować zakończono bezbłędnie to już zbudowanie fabryki sesji powodowało wyżej wymieniony błąd. A wszystkiemu zawinił następujący fragment:
<one-to-one name="Worker" class="Worker" cascade="all" />
Wygląda całkiem niewinnie, z tym, że mapowanie do klasy Worker znajduje się w innym assembly. I stąd cały problem. NHibernate założył istnienie mapowania, którego później nie mógł znaleźć. Rozwiązanie całej sytuacji wydaje się wręcz trywialne:
<one-to-one
name="Worker"
class="Full.Namespace.To.Class.Worker,Assembly.With.Worker"
cascade="all" />
Pozostaje jeszcze pytanie jak zapobiegać takim sytuacjom w przyszłości? Można nie zrobić nic i przeklinać własną sklerozę, albo zrezygnować z mapowań xml i przerzucić się na Fluent NHibernate gdzie o taki błąd będzie trudniej (w związku z kompilowaną charakterystyką rozwiązania).
reVisek zaczal blogowac ^^
OdpowiedzUsuńAle mAsH sHliTzNEgO blOGa5ka
OdpowiedzUsuń:D
Sorry za to, nie mogłem się powstrzymać. Swoją drogą też mam blogspota :)
:)
OdpowiedzUsuń