Visual Studio 2013数据集设计器刷新关系

我有一个应用程序,该应用程序的数据集链接到sql server数据库。我已经更新了sql服务器中的某些名称或外键和主键。我如何将这些更改转换为数据集。例如,我有一个名为fk_temsempl_xxxxx的主键。我在sql数据库上将其更改为fk_temsempl。如何在Visual Studio的数据集设计器中显示更改?

我尝试通过右键单击数据集并单击运行自定义工具来运行自定义工具。那没有用。我尝试配置发生更改的表之一的表适配器,但是关系的名称没有更改。

hyowinner 回答:Visual Studio 2013数据集设计器刷新关系

实际上,您只需右键单击该关系并选择Edit Relation...或双击该行(当鼠标光标从箭头变为拖动符号时),但老实说,我不会打扰;然后,您将在使用关系的任何地方在代码中进行进一步的重构,并且可视化设计人员可能会大量使用它。

您还会遇到VS可能无法帮助您进行重构的问题:在数据绑定方案中,大多数可以作为数据源的事物也可以是多个事物的集合,这些事物可以是有效的DataSource。然后,他们依靠字符串DataMember来确定应该使用数据源中的哪些数据集合。

例如,当绑定源绑定到列出DataTable时,bindingsource.DataSource属性可能是包含DataSet bindingsource.DataMember {{1 }} myBindignSource.DataSource = myDataSet.MyDataTable`。重构字符串内部涉及查找和替换

DataSet中的DataRelation是从外键创建的,这些外键是在将相关表添加到数据集时发现的,但要注意的是,像DataTables一样,它们与数据库无关架构对象-它们并不是永久关联的对象,只是在首次创建数据集实体(数据集实体)时就建立了类似于数据库对象的外观。仅从所选的那些列创建DataTable,并且任何.NET数据类型都与查询输出的类型非常相似。对于以下表格:

DataTable,and the

如果使用is a string of "YOUR_TABLE_NAME". the BindingSource might not be bound as创建表,则使用Person ------ Name VARCHAR(50) SSN INTEGER Birthdate DATE 获得数据表,但是如果您基于SELECT * FROM Person在数据集中创建了新的数据表,则将获得数据表Name (string),SSN (int),Birthdate (datetime)的-即数据表看起来与db表完全不同。数据集和db之间断开连接的概念无处不在,实际上,与数据库有任何关系的唯一属性是用于指定特定DataTable / DataColumn与加载/保存数据相关的DB表/列的属性。您的SELECT LEFT(Name,1) as Initial,PADLEFT(SSN,20) as PadSSN,DATEDIFF(day,Birthdate,NOW()) as AgeDays FROM Person数据列可以重命名为Initial (string),PadSSN (string),AgeDays (int),但是它仍然具有一个Person.Name属性,该属性设置为Blahblah-这就是数据集和数据库之间的映射的工作方式;数据集主要完全独立于db。重命名数据库列仅需要更改.SourceColumn属性

DataRelations甚至没有链接到数据库中的父关系的概念。没有"Name"SourceColumn属性,因为没有必要。它们都是基于FK规则设置的,它们具有相同的规则和生成的名称,但是它们却独立且仅在数据集中起作用。如果您从数据库重命名甚至删除FK,则数据集将以与以往相同的受限方式继续工作;在不存在aprent行的情况下将数据行添加到子表中会引发异常-这与数据库中的FK无关,并且SourceRelation可以具有与FK不同的规则(例如,它可以当FK为NOACTION或什至不同的列时,级联删除。与数据库的FK相比,您可以拥有更多或更少的DataRelations


“运行自定义工具”不是“联系数据库并查看在那里发生了什么更改并将其复制到数据集”,而是“将描述数据集的XSD变成一堆实现强类型数据集的C#类” / table / relation / column等对象”。每当您通过在可视设计器中进行编辑并单击“保存”来更改XSD时,都会运行自定义工具。如果您直接在文本编辑器中编辑XSD,则可能需要手动运行它才能使更改反映在c#类中


重新配置表适配器可能也不会对关系产生任何影响;它只与更改数据表和表适配器有关。如果您确实要刷新关系,请从集中删除数据表并重新创建它。准备好进行可能的重大拖尾/重构代码

本文链接:https://www.f2er.com/2802602.html

大家都在问