5

我目前遇到这里(和其他几个地方)提到的问题: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 始终为空。

如果我将 AccountName 更改为 Name:

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

它工作正常。但这在我们的项目中是不可接受的;我不能总是把名字排成一行(除了如果我可以的话,它会让事情变得不那么清楚)。

但我很困惑,因为看起来这个问题已经解决了:

“修复了 Projections 返回 null 或空设置的问题”

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

那么,谁能告诉我:这个问题没有解决吗,我是否必须应用在http://github.com/funky81/SubSonic-3.0/commit/aa7a9c1b564b2667db7fbd41e09ab72f5d58dcdb上找到的更改才能完成这项工作?或者我错过了什么。因为查看当前的 SubSonic 源,似乎已包含此修复程序。我觉得这应该是简单和有效的,但相反我花了过多的时间在它上面。

4

3 回答 3

2

如果您(我)根据此处的答案修改 SubSonic.Core:Subsonic 3.0 and linq

然后投影正常工作。

但是,我认为这是一个非常糟糕的解决方案,因为它需要分叉一个项目并引入一个数量级的性能下降。

于 2010-06-24T18:21:03.160 回答
2

您能否给我发送更多代码(尤其是 _pulseQuery 和 _accountQuery 背后的代码),以便我解决此问题。您是使用 SimpleRepository 还是 ActiveRecord 方法或直接使用 Query 对象?

于 2010-06-29T05:20:52.973 回答
1

在这里恢复一个老话题,但万一有人稍后搜索这个......

我也“修复”了同样的问题,并在评论中给出了一些解释,在我的 GitHub 上的这个提交中的分叉中:https ://github.com/rally25rs/SubSonic-3.0/commit/61af6aeb2ebb95f486d8df533bf13c8754d443e2

这里实际上还有一个更深层次的问题。如果您选择使用“标准 .NET 内置”投影,那么一些 SubSonic 单元测试开始失败,因为 SS 在其投影生成中做了一些 .NET 投影没有做的额外事情,所以一些SS 的预期功能不起作用。

就个人而言,我认为,较慢的性能(尽管我没有注意到速度下降)是为正确数据付出的小代价。

于 2011-05-06T14:04:08.677 回答