2010-06-24 6 views
5

Je rencontre actuellement la question mentionnée ici (et plusieurs autres): Subsonic 3 Linq Projection IssueSubsonic 3 LINQ Problème de projection, fixe ou non?

Cela se produit à l'aide du package de libération 3.0.0.4, et il se produit également lorsque je prends la dernière de GitHub et de le construire. J'utilise les modèles LINQ.

Je possède ce code:

 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 
           } 
       } 
     }; 

Mais AccountName est toujours nulle.

Si je change le AccountName à Nom:

 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 
           } 
       } 
     }; 

Il fonctionne très bien. Mais ce n'est pas acceptable dans notre projet; Je ne peux pas toujours aligner les noms (outre le fait que cela rendrait les choses moins claires si je le pouvais).

Mais je suis assez confus, car il semble cette question a été fixé:

« Correction d'un problème où les projections étaient de retour des paramètres nuls ou vides »

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

Ainsi, quelqu'un peut-il dites-moi: Ce problème n'est pas résolu, et dois-je appliquer les changements trouvés ici au http://github.com/funky81/SubSonic-3.0/commit/aa7a9c1b564b2667db7fbd41e09ab72f5d58dcdb pour que cela fonctionne? Ou est-ce que je manque quelque chose? Parce que regarder à travers la source SubSonic actuelle, il apparaît que ce correctif a été inclus. J'ai l'impression que cela devrait être simple et efficace, mais j'ai plutôt passé énormément de temps dessus.

Répondre

2

Si vous (me) modifier SubSonic.Core selon la réponse ici: Subsonic 3.0 and linq

Ensuite, la projection fonctionne correctement. Cependant, je considère que c'est une très mauvaise solution car cela nécessite de forger un projet et d'introduire une diminution des performances de l'ordre de grandeur.

2

Pourriez-vous me envoyer un peu plus de code binaire (en particulier ce qui est derrière _pulseQuery et _accountQuery) afin que je puisse résoudre ce problème. Utilisez-vous SimpleRepository ou l'approche ActiveRecord ou les objets de requête directement?

+0

Je ne vais pas avoir le temps de produire un projet minimal illustrant mon problème pendant quelques jours, mais je compte. _pulseQuery & _accountQuery implémenter IQueryable et exposer simplement SubSonic.Repository.SubSonicRepository .GetAll(). J'enveloppe les installations SubSonic avec une simple interface DAO et j'expose IQueryable aux couches supérieures. J'utilise les modèles LINQ de SubSonic (aussi appelés Advanced Templates?) –

+0

Saintedlama, moi aussi je souffre de ce problème en utilisant la version 3.0.0.4 mais je n'ai pas pu le reproduire dans un ensemble plus petit. J'ai cependant illustré deux autres problèmes fréquemment signalés dans un petit échantillon sur http://github.com/andymeadows/SubSonic-Defect-Help – andymeadows

1

Redynamiser un vieux sujet, mais dans le cas où quelqu'un cherche plus tard ...

J'ai aussi « fixe » cette même question, et mettre une explication dans les commentaires, dans ma fourchette sur GitHub dans ce engagement : https://github.com/rally25rs/SubSonic-3.0/commit/61af6aeb2ebb95f486d8df533bf13c8754d443e2

Il y a en fait un problème légèrement plus profond ici aussi. Si vous choisissez d'utiliser les projections "standard .NET intégrées", certains tests unitaires SubSonic commencent à échouer, car SS fait des choses supplémentaires dans sa génération de projection que la projection .NET ne fait pas. la fonctionnalité attendue de SS ne fonctionne pas.

Personnellement, je pense que, et la performance plus lente (bien que je ne l'ai pas remarqué une diminution de la vitesse) est un petit prix à payer pour les données correctes.