Я в настоящее время испытываю проблему, упомянутую здесь (и несколько других мест): Дозвуковые 3 Проблемы Проекции Linq
Это происходит с помощью 3.0.0.4 пакетов выпуска, и также происходит, когда я захватываю последнее от GitHub и создаю его.
Я использую Шаблоны LINQ.
У меня есть этот код:
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
}
}
};
Но AccountName является всегда пустым.
Если я изменяю AccountName для Именования:
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
}
}
};
Это хорошо работает. Но это не приемлемо в нашем проекте; я не могу всегда составлять строку имен (помимо того, что она сделала бы вещи менее ясными, если я мог).
Но я вполне смущен, потому что казалось бы, что эта проблема была устранена:
"Устраненная проблема, куда Проекции возвращали пустые или пустые настройки"
-- http://blog.wekeroad.com/2010/03/21/subsonic-3-0-0-4-released
Так, может любой говорить мне: разве эта проблема не устраняется, и я должен применить изменения, которые, как находят здесь по http://github.com/funky81/SubSonic-3.0/commit/aa7a9c1b564b2667db7fbd41e09ab72f5d58dcdb, сделали эту работу? Или я пропускаю что-то. Поскольку, просматривая текущий источник SubSonic кажется, что эта фиксация была включена. Я чувствую, что это должно быть просто и работать, но вместо этого я потратил беспорядочное количество времени на него.
Если вы (я) измените SubSonic.Core в соответствии с ответом здесь: Subsonic 3.0 и linq
Тогда проекция работает правильно.
Однако я считаю это очень плохим решением, так как оно требует форка проекта и вводит снижение производительности на порядок.
Не могли бы вы прислать мне еще немного кода (особенно то, что стоит за _pulseQuery и _accountQuery), чтобы я мог исправить эту проблему. Используете ли вы SimpleRepository, подход ActiveRecord или объекты запроса напрямую?