2012-07-10 10 views
5

Próbuję dowiedzieć się, jak sprawdzić, czy komponent ma wartość NULL (np. Nie znaleziono w Tridion) w niestandardowym zapleczu. Po prostu nie wiem, jak to sprawdzić, poza złapaniem błędu.Session.GetObject w Tridion 2011 zwraca składnik dla nieistniejącego elementu

Component comp = (Component)session.GetObject(base.ComponentUri); 

if (component != null) 
{ 
    bool isCheckedOut = component.IsCheckedOut; 
} 
else 
{ 
    // how do I get in here! 
} 

jestem 100% pewien, że URI jest poprawna ('tcm: 113-438134') i 100% pewność, że nie ma na magazynie Tridion z tym URI. Powyższy kod wygeneruje błąd na component.IsCheckedOut:

The item tcm:113-438134-16 does not exist. 

Jak sprawdzić istnienie elementu Tridion? Próbowałem umieszczenie obsady na końcu, co nie pomogło:

Component comp = session.GetObject(base.ComponentUri) as Component; 

i próbowałem nie rzucając w ogóle, ale stosując IdentifiableObject, który również nie robi żadnej różnicy. Ktoś wie, jak to zrobić?

Odpowiedz

10

Jest to spowodowane leniwym ładowaniem Tridiona - nigdy nie zwróci obiektu zerowego, jeśli identyfikator URI wydaje się prawidłowy. Możesz użyć session.IsExistingObject(TcmUriOrWebdavUrl), aby sprawdzić, czy obiekt istnieje.

I ...

Jestem pewien, że czekasz to ...

w niestandardowych backend

Nie można użyć API TOM.NET dla procesów inne niż szablony i system zdarzeń. Zamiast tego użyj interfejsu Core Service API.

+0

Właściwie to nie spodziewałem się tego **;) **. Czy to dlatego, że TOM.NET nadal jest "tylko do odczytu"? –

+0

Twoja sugestia działa, przy okazji, tnx! –

+4

Nie, to dlatego, że ładowanie TOM.NET w rzeczywistości ładuje o wiele więcej niż tylko interfejs do Tridion - ładuje Tridiona w procesie. Całość tego. Za pomocą programów ładujących zdarzenia, zarządzania kolejkami, łączenia połączeń z bazami danych i wielowątkowości oraz instancji COM i szablonów silników itp. Oficjalny blog tutaj: http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011_SPONE/concept_19AF6C2427DF4781A866981FA8D62192 –

Powiązane problemy