Обновите одну строку в таблице, используя структуру сущностей - PullRequest
0 голосов
/ 13 марта 2019

Я новичок в использовании EF6 в веб-формах.Я пытаюсь обновить единственную доступную строку в таблице, у которой нет идентификатора, это просто таблица параметров конфигурации для приложения.

У меня есть этот метод обновления в форме просмотра.Это дает мне ошибку при попытке загрузить элемент.Я думаю, что я делаю это здесь неправильно, но не уверен, что мне нужно делать.Я ничего не знаю о linq.

Ошибка 11 Не удается неявно преобразовать тип 'System.Linq.IQueryable' в 'InventarioCiclico.xInventarioConfigs'.Существует явное преобразование (вам не хватает приведения?) C: \ Users \ A0H79224 \ Documents \ Visual Studio 2013 \ Projects \ InventarioCiclico \ InventarioCiclico \ Account \ Admin \ ConfigurarInventario.aspx.cs 73 20 InventarioCiclico

 // The id parameter name should match the DataKeyNames value set on the control
    public void fvInventarioConfigs_UpdateItem(xInventarioConfigs configs)
    {

        InventarioCiclico.xInventarioConfigs item = configs;

        InventarioCiclicoContext context = new InventarioCiclicoContext();

        // Load the item here, e.g. item = MyDataLayer.Find(id);
        item = (from c in context.xInventarioConfigs select c).Take(1);
        if (item == null)
        {
            // The item wasn't found
            ModelState.AddModelError("", String.Format("Item with id was not found"));
            return;
        }

        TryUpdateModel(item);
        if (ModelState.IsValid)
        {
            context.SaveChanges();
            // Save changes here, e.g. MyDataLayer.SaveChanges();

        }
    }

Ответы [ 2 ]

2 голосов
/ 13 марта 2019

Take возвращает IQueryable , даже если вы выбираете только одну запись с помощью Take (1) .Вы можете использовать что-то вроде этого как быстрое исправление:

item = (from c in context.xInventarioConfigs select c).Take(1).FirstOrDefault();

Или даже без Take, поскольку FirstOrDefault все равно выбирает одну строку.

1 голос
/ 13 марта 2019

Take возвращает IQueryable, который может содержать только один элемент, но все еще является коллекцией сортов. Если вы выберете только одну запись с помощью Take (1), вы также можете перейти к First (осторожно, если в вашем наборе результатов нет ни одной) или FirstOrDefault напрямую

item = (from c in context.xInventarioConfigs select c).FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...