0

使用 ASP.NET Web-Api,我的控制器中有以下 POST 设置。从 Fiddler 发布到它时,我收到错误消息:

The LINQ expression node type 'ArrayIndex' is not supported in LINQ to Entities.

...当它到达 var auth = dba.ApiMembers... 行时

    // POST api/Avail
    [BasicAuthentication]
    public HttpResponseMessage PostAvail(Avail[] avail)
    {
        if (ModelState.IsValid)
        {
            // Check if authorised
            var auth = dba.ApiMembers.Where(a => a.hotel_id == 
                   avail[0].HID && a.UserName == User.Identity.Name)
                   .FirstOrDefault();

有人能看出这条线有什么问题吗?

4

1 回答 1

2

User.Identity.NameLINQ2SQL 查询在数据库中运行,无法转换avail[0]为数据库命令。您应该将这些值初始化为参数并将简单类型传递给 LINQ 查询。

var hid = avail[0].HID;
var userName = User.Identity.Name;
var auth = dba.ApiMembers.Where(a => a.hotel_id == hid && a.UserName == userName).FirstOrDefault();
于 2012-06-22T14:44:40.493 回答