[英]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.