В настоящее время я испытываю проблему, упомянутую здесь (и в некоторых других местах): Subsonic 3 Linq Projection Issue
Это происходит с использованием пакета выпуска 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 всегда имеет значение null.
Если я изменю имя учетной записи на имя:
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, кажется, это исправление было включено.Я чувствую, что это должно быть просто и работать, но вместо этого я потратил на это слишком много времени.