2012-07-10 30 views
5

Estoy tratando de averiguar cómo comprobar si un componente es nulo (por ejemplo, no se encuentra en Tridion) en un back-end personalizado. Simplemente no veo cómo comprobar esto, salvo detectar el error.Session.GetObject en Tridion 2011 devuelve componente para artículo no existente

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

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

estoy 100% seguro de que el URI es correcta ('tcm: 113-438134') y 100% seguro de que no hay ningún elemento en Tridion con ese URI. El código anterior generará un error en component.IsCheckedOut:

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

¿Cómo verifico la existencia de un elemento de Tridion? He intentado colocar el molde en el extremo, lo cual no ayuda mucho:

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

y he tratado de no colada a todos, pero el uso de un IdentifiableObject, que tampoco hace ninguna diferencia. ¿Alguien sabe cómo hacer esto?

Respuesta

10

Esto se debe a la carga diferida de Tridion: nunca devolverá un objeto nulo si el URI parece válido. Puede usar session.IsExistingObject(TcmUriOrWebdavUrl) para verificar si el objeto existe.

Y ...

Estoy seguro de que usted está esperando esto ...

en un back-end personalizada

No se puede utilizar la API de procesos TOM.NET que no sean plantillas y sistema de eventos. Por favor, use la API de servicio principal en su lugar.

+0

En realidad, no estaba esperando eso **;) **. ¿Eso es porque TOM.NET sigue siendo de "solo lectura"? –

+0

¡Tu sugerencia funciona, por cierto, TNX! –

+4

No, es porque cargar TOM.NET realmente carga mucho más que solo una interfaz en Tridion: carga Tridion en su proceso. Todo el Con sus cargadores de eventos, y gestión de colas, y agrupación de conexiones de bases de datos, y multi-threading, y las instancias COM, y los motores de plantillas, etc. Anuncio oficial aquí: http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011_SPONE/concept_19AF6C2427DF4781A866981FA8D62192 –

Cuestiones relacionadas