2010-06-24 8 views
5

Actualmente estoy experimentando el problema mencionado aquí (y varios otros lugares): Subsonic 3 Linq Projection IssueSubsonic 3 Problema de proyección LINQ, ¿corregido o no?

Esto está ocurriendo con el paquete 3.0.0.4 liberación, y también ocurre cuando me agarra el último de GitHub y construirlo.

Estoy usando las plantillas LINQ.

tengo este código:

 var newModel = new ViewModels.HomeIndexViewModel() { 
      PulseListViewModel = 
       new ViewModels.PulseListViewModel 
       { 
        Pulses = from p in _pulseQuery 
          join a in _accountQuery on p.AccountId equals a.AccountId 
          orderby p.CreateDate descending 
          select new PulseListViewModel.Pulse() 
           { 
             AccountName = a.Name 
            , Category = p.Category 
            , CreateDate = p.CreateDate 
            , Link = p.Link 
            , Message = p.Message 
            , Source = p.Source 
            , Title = p.Title 
           } 
       } 
     }; 

Pero AccountName siempre es nula.

Si cambio la AccountName a Nombre:

 var newModel = new ViewModels.HomeIndexViewModel() { 
      PulseListViewModel = 
       new ViewModels.PulseListViewModel 
       { 
        Pulses = from p in _pulseQuery 
          join a in _accountQuery on p.AccountId equals a.AccountId 
          orderby p.CreateDate descending 
          select new PulseListViewModel.Pulse() 
           { 
            Name = a.Name 
            , Category = p.Category 
            , CreateDate = p.CreateDate 
            , Link = p.Link 
            , Message = p.Message 
            , Source = p.Source 
            , Title = p.Title 
           } 
       } 
     }; 

funciona bien. Pero eso no es aceptable en nuestro proyecto; No siempre puedo alinear los nombres (además del hecho de que eso haría las cosas menos claras si pudiera).

Pero estoy bastante confundido porque parecería este problema ha sido fijada:

"Solucionado el problema de Proyecciones regresaban ajustes nulos o vacíos"

- http://blog.wekeroad.com/2010/03/21/subsonic-3-0-0-4-released

Por lo tanto, puede alguien dime: ¿Este problema no está solucionado, y tengo que aplicar los cambios que se encuentran aquí en http://github.com/funky81/SubSonic-3.0/commit/aa7a9c1b564b2667db7fbd41e09ab72f5d58dcdb para que esto funcione? O me estoy perdiendo algo. Porque mirando a través de la fuente SubSonic actual parece que esta corrección ha sido incluida. Siento que esto debería ser simple y funcionar, pero en su lugar he gastado una cantidad de tiempo desmesurada.

Respuesta

2

Si (Me) modificar SubSonic.Core de acuerdo con la respuesta aquí: Subsonic 3.0 and linq

Entonces la proyección funciona correctamente.

Sin embargo, considero que esta es una solución muy mala, ya que requiere bifurcar un proyecto e introducir una disminución en el rendimiento del orden de magnitud.

2

¿Podría enviarme un poco más de código (especialmente lo que hay detrás de _pulseQuery y _countQuery) para que pueda solucionar este problema. ¿Está utilizando SimpleRepository o el enfoque ActiveRecord o los objetos Query directamente?

+0

No tendré tiempo para producir un proyecto mínimo que ilustre mi problema durante un par de días, pero tengo la intención de hacerlo. _pulseQuery & _accountQuery implementa IQueryable y simplemente expone SubSonic.Repository.SubSonicRepository .GetAll(). Envuelvo las instalaciones SubSonic con una interfaz DAO simple y expongo IQueryable a capas más altas. Estoy usando las plantillas LINQ de SubSonic (también llamadas Plantillas Avanzadas?) –

+0

Saintedlama, yo también sufro este problema usando 3.0.0.4 pero no he podido reproducirlo en un conjunto más pequeño, fuera de un proyecto más grande. Sin embargo, he ilustrado otros dos problemas comúnmente publicados en un pequeño conjunto de muestras en http://github.com/andymeadows/SubSonic-Defect-Help – andymeadows

1

La reactivación de un viejo tema aquí, pero en caso de que alguien busca esta tarde ...

también "fijo" este mismo tema, y ​​poner un poco de explicación en los comentarios, en mi tenedor en GitHub en este comprometerse : https://github.com/rally25rs/SubSonic-3.0/commit/61af6aeb2ebb95f486d8df533bf13c8754d443e2

Aquí también hay un problema un poco más profundo. Si opta por utilizar las proyecciones "estándar .NET incorporado", algunas de las pruebas de unidad SubSonic comienzan a fallar, porque SS hace algunas cosas adicionales en su generación de proyección que la proyección .NET no hace, por lo que algunas de la funcionalidad esperada de SS no funciona.

Personalmente, creo que, y el rendimiento más lento (aunque no he notado una disminución de velocidad) es un pequeño precio a pagar por los datos correctos.

Cuestiones relacionadas