Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
似乎无法将linq绑定的datagrid保存到vb.net_Vb.net_Linq_Datagrid - Fatal编程技术网

似乎无法将linq绑定的datagrid保存到vb.net

似乎无法将linq绑定的datagrid保存到vb.net,vb.net,linq,datagrid,Vb.net,Linq,Datagrid,这看起来应该很简单,但我已经和它斗争了两天了 我有一个datagrid,用linq查询填充它,让用户编辑它,然后通过子更改保存它 这项工作: Dim reportdata2 = From t In db.Inventory_Items Select t 但它显然会返回所有列…因此..尝试了以下方法: Dim reportdata2 = From t In db.Inventory_Items Select t.Description, t.Customer 看起来很好,但不允许我编辑-看起来

这看起来应该很简单,但我已经和它斗争了两天了

我有一个datagrid,用linq查询填充它,让用户编辑它,然后通过子更改保存它

这项工作:

Dim reportdata2 = From t In db.Inventory_Items Select t
但它显然会返回所有列…因此..尝试了以下方法:

Dim reportdata2 = From t In db.Inventory_Items Select t.Description, t.Customer
看起来很好,但不允许我编辑-看起来是只读的,好吧…通过创建一个简单类来避免匿名类型:

Dim reportdata2 = From t In db.Inventory_Items Select New testInventory With {.Item_Desc = t.Description}
现在我可以编辑它,但当我转到submitchanges时,它不会抛出错误,但不会保存到数据库

我错过了什么世界


任何帮助都会很棒

问题在于您没有从数据上下文编辑任何对象。您将获取这些对象,从中获取一些数据并将其放入新对象中,然后修改这些新对象。修改这些新对象不会影响原始对象,因此这些原始对象中没有要保存回数据库的更改


如果您实际上不打算首先修改原始对象,则必须将新对象的更改映射回这些原始对象,然后保存这些更改。这意味着,在保存之前,从数据上下文中获取一个列表,在其中循环并从相应的testInventory对象中更新每个列表。或者是向数据上下文中添加标记为正在修改而不是新的项。

那么,您的意思是添加一个名为changed的列,然后每当它们点击saved时,在整个datagrid中循环查找标记的行,并以某种方式将该行写入数据库?似乎使datacontext变得无用?看起来回到ADO会更容易。这是一个如此普遍的需求,它似乎应该是一个相当直接的事情去做-你确定我没有错过什么吗?不,这不是我的意思。是的,你错过了一些东西。我说的是,您需要将UI层中使用的对象的更改映射到数据上下文中的对象,然后将数据上下文中的更改保存回数据库。