Visual studio 2008 我的TableAdapter的更新和删除命令发生了什么变化?

Visual studio 2008 我的TableAdapter的更新和删除命令发生了什么变化?,visual-studio-2008,dataset,designer,tableadapter,Visual Studio 2008,Dataset,Designer,Tableadapter,看来,我正在和一个顽固的VS2008数据集设计师斗争。我一直在尝试一个看似简单的2表数据集解决方案,其中一个表只是存储在另一个表中的整数值的文本含义。基础数据设计101 Table1 CharField1 CharField2 IntForeignKeyField1 etc Table2 IntPrimaryKey1 ValueForKeyField 这并不会真正影响我遇到的问题,我不相信,因为我不想做任何事情,只想从第二个表中读取值,这样我就可以在客户端的DataGridViewCombo

看来,我正在和一个顽固的VS2008数据集设计师斗争。我一直在尝试一个看似简单的2表数据集解决方案,其中一个表只是存储在另一个表中的整数值的文本含义。基础数据设计101

Table1
CharField1
CharField2
IntForeignKeyField1
etc

Table2
IntPrimaryKey1
ValueForKeyField
这并不会真正影响我遇到的问题,我不相信,因为我不想做任何事情,只想从第二个表中读取值,这样我就可以在客户端的DataGridViewComboBoxColumn列中选择它们-我永远不会在客户端上编辑它们。但是,我离题了

由于它存在于一个web服务中,并且我希望将一个强类型的数据集交付给该web服务的客户端,因此我决定使用数据集设计器来构建TableAdapter和所有管道,认为这样做可能会减少工作量并更容易维护

因此,我创建了漂亮的框并编辑了select语句,指示设计器创建表适配器要使用的所有Insert、Update和Delete命令。它高兴地感谢了我,告诉我一切都按我的要求做了

然而,当我试图使用Update语句时,我得到一个错误,说没有有效的Update语句!在网上搜索了一些有类似问题的人,但没有结果之后,我深入研究了数据集的XML。果然,没有Update语句,也没有Delete语句

我尝试从项目中完全删除并重新创建数据集,结果相同。未创建Update或Delete语句,即使报告为已完成

通过检查另一个项目中设计的另一个数据集,我最终手工构建了更新语句XML,因此web服务现在可以工作了。然而,我不相信我的改变会通过设计师发起的编辑持续下去,我也不明白为什么它不起作用。有什么想法吗

谢谢你的反馈,
Dave

可能是因为没有为表定义唯一的主键吗?

我也有同样的问题。使用多个表中的字段时,TableAdapter无法正常工作。我能够从以下文章中重新创建解决方案:更新TableAdapter以使用联接

解决方案包括创建自己的选择/更新/插入/删除过程。不幸的是,虽然我能够遵循sqlserver数据库的解决方案,但我仍然无法让它在本地Access数据库中工作。所有存储过程选项都显示为灰色


祝你好运

我想我找到了解决办法。 1仅为主表创建TableAdapter,并复制TableAdapter属性窗口中存储的TableAdapter更新过程 2更改TableAdapter配置向导查询生成器中的选择查询,以包括表和联接中的字段。 3将旧的更新过程粘贴到现在空白的TableAdapter更新过程中。 4创建DataGridView后,可以显示两个表中的字段并更新主表。 对插入和删除命令重复步骤

如果您的目标是更新这两个表,请尝试查看web上的TableAdapter父/子更新信息。 这里有一个很好的链接:
遇到了同样的基本问题。我告诉数据设计器创建所有insert、update和delete语句。当我去更新其中一个表时,没有可用的更新。最后,我进入了由数据设计器创建的.xsd文件,只需双击在IDE中打开它。然后,我右键单击出现问题的表的标题栏,并选择配置选项。从那里我点击了“高级选项”按钮,然后选择了“生成插入、更新、删除语句”选项。按OK后,我检查了我的项目,表适配器的更新可用。

George的建议非常好。我们需要启用“生成插入、更新、删除语句”选项

但是,在VS2013中,在selete语句中使用不必要的表限定符可能会打乱IDE,导致仅生成SELECT和INSERT语句。只要去掉这个限定符就可以了。确保你也有一个独特的PK


如果需要使用复杂的填充(如应用过滤器)来仅返回表的某些行,则可以在form load事件中使用特定的select语句填充数据表。这样,生成的INSERT、UPDATE和DELETE语句仍然可以工作,因为DELETE和UPDATE在PK上工作。

由于完全没有注释,我认为这没有发生在任何其他人身上,所以我的VS2008实现中存在一个真正的错误或小故障。伟大的我也得到了一个风滚草徽章,感谢你给我文章的链接。然而,我的问题,也许还有你的问题,比这更简单。我所要做的就是在SQLStudioDesigner中定义主键和关系,VS非常喜欢它。我不知道你的数据是什么
a看起来像,但VS可以从SQL Server获取相当多的信息-或者不,显然。工作量太大了!:这就是我为了让它工作所做的。然而,当我在数据库中定义主键和关系时,它工作得更加流畅和干净,没有手动更改任何内容-VS2008解决了如何从这些信息中执行它需要执行的操作,而无需手动干预…您得到了适用于MS Access的此解决方案吗?我正面临着这个问题,我正试图让你的方法发挥作用。不要觉得这很糟糕,我只是做了同样的事情:在DB中设置PK为我解决了同样的问题。