2010-06-24 11 views
5

Jestem obecnie przeżywa problem wymieniony tutaj (i kilku innych miejscach): Subsonic 3 Linq Projection IssueSubsonic 3 LINQ Problem z projekcją, naprawiony czy nie?

Dzieje się przy użyciu pakietu 3.0.0.4 zwalniający, a także pojawia się, gdy łapię najpóźniej od GitHub i zbudować.

Używam szablonów LINQ.

mam ten kod:

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

Ale Nazwa_konta zawsze ma wartość null.

Jeśli zmienię ACCOUNTNAME do Nazwa:

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

To działa dobrze. Ale nie jest to dopuszczalne w naszym projekcie; Nie zawsze mogę ustawić nazwy w kolejce (poza faktem, że byłoby to mniej jasne, gdybym mógł).

Ale jestem zupełnie zdezorientowany, ponieważ wydaje się, problem ten został ustalony:

„Naprawiono problem gdzie Projekcje wracali zerowe lub puste ustawienia”

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

Więc może ktoś powiedz mi: czy ten problem nie został naprawiony i czy muszę zastosować zmiany znalezione tutaj pod adresem http://github.com/funky81/SubSonic-3.0/commit/aa7a9c1b564b2667db7fbd41e09ab72f5d58dcdb, aby to zadziałało? Czy może czegoś brakuje? Ponieważ przeglądając obecne źródło SubSonic wydaje się, że ta poprawka została uwzględniona. Czuję, że to powinno być proste i działa, ale spędziłem na nim nadmierną ilość czasu.

Odpowiedz

2

Jeśli (me) modyfikować SubSonic.Core według odpowiedź tutaj: Subsonic 3.0 and linq

Następnie projekcja działa poprawnie.

Jednak uważam to za bardzo złe rozwiązanie, ponieważ wymaga rozwidlenia projektu i wprowadzenia spadku rzędu wielkości.

2

Czy możesz przesłać mi trochę więcej kodu (zwłaszcza to, co kryje się za _pulseQuery i _accountQuery), więc mogę naprawić ten problem. Czy korzystasz bezpośrednio z SimpleRepository, ActiveRecord lub obiektów Query?

+0

Nie będę miał czasu na opracowanie minimalnego projektu ilustrującego mój problem przez kilka dni, ale zamierzam to zrobić. _pulseQuery & _accountQuery implementuj IQueryable i po prostu wyeksponuj SubSonic.Repository.SubSonicRepository .GetAll(). Pakuję obiekty SubSonic za pomocą prostego interfejsu DAO i wystawiam IQueryable na wyższe warstwy. Używam szablonów LINQ SubSonic (zwanych również szablonami zaawansowanymi?) –

+0

Saintedlama, ja też cierpię z powodu tego problemu przy użyciu 3.0.0.4, ale nie byłem w stanie odtworzyć go w mniejszym zestawie - poza większym projektem. Zilustrowałem jednak dwa inne często publikowane problemy w małym zestawie próbek na stronie http://github.com/andymeadows/SubSonic-Defect-Help – andymeadows

1

Ożywienie starego tematu tutaj, ale w przypadku, gdy ktoś szuka to później ...

ja też „stałe” ten sam problem, i umieścić kilka wyjaśnień w komentarzach, moim widelcem na GitHub w tym popełnić : https://github.com/rally25rs/SubSonic-3.0/commit/61af6aeb2ebb95f486d8df533bf13c8754d443e2

Tutaj jest również nieco głębszy problem. Jeśli zdecydujesz się na użycie "standardowych wbudowanych" systemów .NET, niektóre testy jednostkowe SubSonic zaczynają się nie udać, ponieważ SS robi dodatkowe elementy w generowaniu projekcji, których projekcja .NET nie działa, więc niektóre z oczekiwana funkcjonalność SS nie działa.

Osobiście uważam, że i wolniejsza wydajność (choć nie zauważyłem spadku prędkości) to niewielka cena za prawidłowe dane.

Powiązane problemy