2012-06-22 65 views
0

使用ASP.NET Web的API,我有我的控制器以下岗位设置。当从提琴手张贴到它,我得到错误信息:Asp.net MVC LINQ错误信息

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(); 

任何人都可以看到什么毛病用这条线?

+0

http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/39adb1ac-451b-48cc-aac5-4c9fe82b7cce – GriffeyDog

回答

2

LINQ2SQL查询数据库中运行,这是不可能的User.Identity.Nameavail[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();