开发者

Linq To Entity Error while checking the record if exist in database

I am getting an error when trying to use linqsql query:

LINQ to Entities does not recognize the method 'System.String get_Item(System.String)' method, and this method cannot be translated into a store expression.

Code:

 [HttpPost]
    public ActionResult CreateGiftVoucher(FormCollection collection)
    {
        IVoucherRepository voucherResp = new VoucherRepository();
        IQueryable<Voucher> getVoucher = voucherResp.GetAllVouchers();

        //if (getVoucher.Where(x => x.Code == collection["Code"]).Count() > 0) {
        if (getVoucher.Any(r => 开发者_运维问答r.Code == collection["Code"]))
        {
            ModelState.AddModelError("Code", "Code Already Exists");
        } return View(); }

Voucher Repository

 public IQueryable<Voucher> GetAllVouchers()
    {
        return entity.Vouchers;
    }


Your Linq query is translated to SQL, then executed on the database. But there is no SQL equivalent for collection["Code"], so the query can't be translated to SQL, hence the error. In that case the fix is easy: just put the result of collection["Code"] in a local variable outside the query.

    string code = collection["Code"];
    if (getVoucher.Any(r => r.Code == code))
    {
        ModelState.AddModelError("Code", "Code Already Exists");
    }


LINQ to entities cannot evaluate the expression collection["Code"]. Try evaluating that expression before the query:

string code = collection["Code"];
if (getVoucher.Any(r => r.Code == code))
{
    ...
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜