2010年7月22日 星期四

LINQ to Entity: 出現 Only parameterless constructors and initializers are supported in LINQ to Entities 錯誤

問題

使用 LINQ to Entities 時,出現了如下的錯誤。

Only parameterless constructors and initializers are supported in LINQ to Entities

原因

原來,我使用了 ReSharper 的 Convert Anonymous Type to Named Type 的功能,它會建立一個新的 Type,並沒有預設建構子。程式寫起來如下

from u in _entities.UserInfoes
select new UserViewModel(u.Displayname, u.UserId, u.Email

而 Entity Framework 竟然不支援這樣的寫法?真怪。

解法

解法呢?就把UserViewModel改成有預設建構子。呼叫方式如下

from u in _entities.UserInfoes
select new UserViewModel
{
    Displayname = u.Displayname,
    UserId = u.UserId,
    Email = u.Email
}

沒有留言:

Share with Facebook