2012-06-22 2 views
0

Используя ASP.NET Web-Api, у меня есть следующая настройка POST в моем контроллере. При размещении на него с Скрипач, я получаю сообщение об ошибке:Сообщение об ошибке MVC LINQ Asp.net

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

... когда он попадает в вар 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.Name и 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(); 
Смежные вопросы