Tengo una pregunta:

Cuando creo mi servicio de dominio personalizado (para consumir un servicio web de terceros) donde uso métodos CRUD parametrizados, todo funciona, excepto la creación de un nuevo registro. Lightswitch agrega este servicio de dominio como fuente de datos y puede crear una pantalla para agregar un nuevo registro. Cuando hago clic en el botón "Guardar" en la aplicación generada, llama correctamente al método Create en el servicio de dominio, el servicio web remoto crea correctamente el registro y el programa abandona el método Create en un servicio de dominio. pero de repente, el interruptor de luz llama al método de consulta predeterminado, que no está parametrizado y devuelve un IEnumerable en mi caso.

Parece que Lightswitch está tratando de volver a leer el registro aún creado para mostrarlo. Pero no usa un método ReadOne adecuado, que está correctamente preparado, creado e incluso reconocido por Lightswitch, porque puede llamarlo en otra pantalla de detalles.

¿Por qué Lightswitch llama a este método [Query (IsDefault = true)], por favor?

Gracias por cualquier pista

Gusta Vomacka

1
Gusta Vomacka 7 feb. 2012 a las 14:09

1 respuesta

La mejor respuesta

La razón por la que LightSwitch requiere que tenga un método predeterminado que no toma parámetros es porque amenaza a los servicios WCF RIA como "tablas de base de datos" y llamará a este método siempre que intente mostrar información "en la tabla". Si tiene un filtro, también intentará filtrar los datos (por ejemplo, para obtener la página uno, agregará ".skip (1) .Take (10)" a la llamada).

Puede que su respuesta sea no usar un servicio WCF RIA en este caso.

Usa este método:

http://blogs.msdn.com/b/bethmassi/archive/2012/01/30/calling-web-services-to-validate-data-in-visual-studio-lightswitch.aspx

0
Michael Washington 8 feb. 2012 a las 04:21
He encontrado una solución. Estoy consumiendo NAV Dynamics Web Services, que espera una entidad para la creación aprobada por ref. Así que hago una referencia al conjunto de cambios en el método Initialize de un DomainService y anulo el método PersistChangeSet y sobrescribo el Id de la entidad ChangeSet con el Id creado en la entidad WebService por el propio WebService. Funciona por ahora. pero gracias por ese enlace, se ve muy interesante
 – 
Gusta Vomacka
9 feb. 2012 a las 11:22