LINQ to Entities无法识别方法'DataAccessLayer.faturaozellikleri get_Item(Int32)

时间:2013-05-13 15:11:02

标签: c# linq entity-framework-4.1

我有一个正在运行的方法,但在我使用自定义连接字符串之后,它起作用了......

public void ShiftBillNumber(List<faturaozellikleri> shiftBillNumberList,int  accrual)
{           
  var faturaOzellikleri = new faturaozellikleri();

  for (int i = 0; i < shiftBillNumberList.Count; i++)
  {
    faturaOzellikleri = shiftBillNumberList[i];

   if (i != shiftBillNumberList.Count - 1)
   {
     if (faturaOzellikleri.FaturaSeriID != shiftBillNumberList[i + 1].FaturaSeriID)
     {
      shiftBillNumberList[i].FaturaNo = shiftBillNumberList[i + 1].FaturaNo;
      shiftBillNumberList[i].FaturaSeriID = shiftBillNumberList[i + 1].FaturaSeriID;
      shiftBillNumberList[i].SeriNo = shiftBillNumberList[i + 1].SeriNo;
     }
     else
     {
      shiftBillNumberList[i].FaturaNo = shiftBillNumberList[i].FaturaNo + accrual;
     }
   }
   else
  {

   var activeSerial =ent.faturaserileri.FirstOrDefault(f => f.ID == shiftBillNumberList[i].FaturaSeriID);

      *********************** 
    ****************

      ent.SaveChanges();

    }

  }
 }

最后一个问题已经出现了问题

   var activeSerial =ent.faturaserileri.FirstOrDefault(f => f.ID == shiftBillNumberList[i].FaturaSeriID);

这是工作,但现在它不起作用..我尝试过(将其分为两部分

var xx = ent.faturaserileri.Select(s => s);

var activeSerial = xx.FirstOrDefault(f => f.ID == shiftBillNumberList[i].FaturaSeriID);

但我得到同样的错误..

“faturaozellikleri”是我数据库中表格的名称,我使用的是实体框架。

2 个答案:

答案 0 :(得分:1)

EF正试图将部分shiftBillNumberList[i].FaturaSeriID翻译成SQL,但是没有翻译。如果你先将它放入一个变量中就可以了:

var id = shiftBillNumberList[i].FaturaSeriID;    
var activeSerial = ent.faturaserileri.FirstOrDefault(f => f.ID == id);

变量id的值现在将作为查询参数传输。

答案 1 :(得分:1)

尝试将shiftBillNumberList [i] .FaturaSeriID分配给变量(int或其他),然后调用该函数。

var sampleID = shiftBillNumberList[i].FaturaSeriID;
var activeSerial =ent.faturaserileri.FirstOrDefault(f => f.ID == sampleID );

这可能有用。