繁体   English   中英

使用实体框架更新表中的单行

[英]Update single row in a table using entity framework

我是在Webforms中使用EF6的新手。 我正在尝试更新表中唯一没有ID的行,它只是应用程序的参数配置表。

我在formview上有此更新方法。 当我尝试加载项目时,它给了我错误。 我认为我在这里做错了,但是不确定我需要做什么。 我对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();

        }
    }

就拿一个IQueryable即使你通过采取(1)只选择一个记录返回。 您可以使用以下方法作为快速解决方案:

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

甚至没有Take as FirstOrDefault也会选择一行。

Take返回一个IQueryable,它可能只包含一个项目,但仍然是各种集合。 如果使用Take(1)仅选择一条记录,则最好直接选择First(如果结果集中没有记录,请谨慎选择)或FirstOrDefault

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM