c#所有类型的数据库如何查看表关系图结构图 在哪里能看?


项目
12/18/2023
若要有效编写查询,应了解完整的查询操作中的变量类型是如何全部彼此关联的。 如果了解这些关系,就能够更容易地理解文档中的 LINQ 示例和代码示例。 另外,还能了解在使用 var 隐式对变量进行类型化时的操作。LINQ 查询操作在数据源、查询本身及查询执行中是强类型的。 查询中变量的类型必须与数据源中元素的类型和 foreach 语句中迭代变量的类型兼容。 此强类型保证在编译时捕获类型错误,以便可以在用户遇到这些错误之前更正它们。为了演示这些类型关系,下面的大多数示例对所有变量使用显式类型。 最后一个示例演示在利用使用 var 的隐式类型时,如何应用相同的原则。不转换源数据的查询下图演示不对数据执行转换的 LINQ to Objects 查询操作。 源包含一个字符串序列,查询输出也是一个字符串序列。数据源的类型参数决定范围变量的类型。
所选对象的类型决定查询变量的类型。 此处的 name 是一个字符串。 因此,查询变量是一个 IEnumerable<string>。
在 foreach 语句中循环访问查询变量。 因为查询变量是一个字符串序列,所以迭代变量也是一个字符串。
转换源数据的查询下图演示对数据执行简单转换的 LINQ to SQL 查询操作。 查询将一个 Customer 对象序列用作输入,并只选择结果中的 Name 属性。 因为 Name 是一个字符串,所以查询生成一个字符串序列作为输出。数据源的类型参数决定范围变量的类型。
select 语句返回 Name 属性,而非完整的 Customer 对象。 因为 Name 是一个字符串,所以 custNameQuery 的类型参数是 string,而非 Customer。
因为 custNameQuery 是一个字符串序列,所以 foreach 循环的迭代变量也必须是 string。
下图演示稍微复杂的转换。 select 语句返回只捕获原始 Customer 对象的两个成员的匿名类型。数据源的类型参数始终为查询中范围变量的类型。
因为 select 语句生成匿名类型,所以必须使用 var 隐式类型化查询变量。
因为查询变量的类型是隐式的,所以 foreach 循环中的迭代变量也必须是隐式的。
虽然需要了解查询操作中的类型关系,但是也可以选择让编译器执行全部工作。 关键字 var 可用于查询操作中的任何本地变量。 下图与前面讨论的第二个示例相似。 但是,编译器为查询操作中的各个变量提供强类型。LINQ 和泛型类型 (C#)LINQ 查询基于泛型类型。 无需深入了解泛型即可开始编写查询。 但是,可能需要了解 2 个基本概念:创建泛型集合类(如 List<T>)的实例时,需将“T”替换为列表将包含的对象类型。 例如,字符串列表表示为 List<string>,Customer 对象列表表示为 List<Customer>。 泛型列表属于强类型,与将其元素存储为 Object 的集合相比,泛型列表具备更多优势。 如果尝试将 Customer 添加到 List<string>,则会在编译时收到错误。 泛型集合易于使用的原因是不必执行运行时类型转换。
IEnumerable<T> 是一个接口,通过该接口,可以使用 foreach 语句来枚举泛型集合类。 泛型集合类支持 IEnumerable<T>,正如非泛型集合类(如 ArrayList)支持 IEnumerable。
有关泛型的详细信息,请参阅泛型。LINQ 查询中的 IEnumerable<T> 变量LINQ 查询变量被类型化为 IEnumerable<T> 或派生类型(如 IQueryable<T>)。 看到类型化为 IEnumerable<Customer> 的查询变量时,这只意味着执行查询时,该查询将生成包含零个或多个 Customer 对象的序列。IEnumerable<Customer> customerQuery =
from cust in customers
where cust.City == "London"
select cust;
foreach (Customer customer in customerQuery)
{
Console.WriteLine($"{customer.LastName}, {customer.FirstName}");
}
让编译器处理泛型类型声明如果愿意,可以使用 var 关键字来避免使用泛型语法。 var 关键字指示编译器通过查看在 from 子句中指定的数据源来推断查询变量的类型。 以下示例生成与上例相同的编译代码:var customerQuery2 =
from cust in customers
where cust.City == "London"
select cust;
foreach(var customer in customerQuery2)
{
Console.WriteLine($"{customer.LastName}, {customer.FirstName}");
}
变量的类型明显或显式指定嵌套泛型类型(如由组查询生成的那些类型)并不重要时,var 关键字很有用。 通常,我们建议如果使用 var,应意识到这可能使他人更难以理解代码。 有关详细信息,请参阅隐式类型局部变量。
反馈
查看所有页面反馈

项目
07/17/2023
可以使用各种工具窗口在 Visual Studio 中检查类及其成员,这些窗口包括“类视图”、“调用层次结构”、“对象浏览器”和“代码定义”(仅限 C++)。 这些工具窗口可以检查 Visual Studio 项目、.NET 组件、COM 组件、动态链接库 (DLL) 和类型库 (TLB) 中的代码。可以使用各种工具窗口在 Visual Studio 中检查类及其成员,这些窗口包括“类视图”、“调用层次结构”、“对象浏览器”和“代码定义”。 这些工具窗口可以检查 Visual Studio 项目、.NET 组件、COM 组件、动态链接库 (DLL) 和类型库 (TLB) 中的代码。还可以使用“解决方案资源管理器”浏览项目中的类型和成员、搜索符号、查看方法的调用层次结构、查找符号引用及其他操作,而无需在多个工具窗口之间进行切换。如果安装了 Visual Studio Enterprise 版本,则可以使用代码图来直观显示代码的结构及其在整个解决方案中的依赖项。 有关详细信息,请参阅映射代码图中的依赖项。类视图(Visual Basic、C#、C++)“类视图”显示为“解决方案资源管理器”的一部分并作为单独窗口 。 “类视图”显示应用程序的元素。 上部窗格显示命名空间、类型、接口、枚举和类,下部窗格显示属于在上部窗格中所选类型的成员。 通过使用此窗口,可以移到源代码(或“对象浏览器”,如果该元素在解决方案外部进行定义)中的成员定义。不需要编译项目即可在“类视图”中查看其元素。 修改项目中的代码时,窗口进行刷新。通过选择项目节点,然后选择“添加”按钮打开“添加新项”对话框,可以向项目添加代码 。 在单独的文件中添加代码。如果项目签入源代码管理,则每个“类视图”元素均显示一个指示该文件源代码状态的图标。 该元素的快捷菜单上也提供常用的源代码管理命令,如“签出”、“签入”和“获取最新版本”
。“类视图”工具栏“类视图”工具栏包含以下命令:“属性”
描述
新建文件夹
创建虚拟文件夹或子文件夹,以便可以组织常用的元素。 它们保存在活动解决方案 (.suo) 文件中。 重命名或删除代码中的某个元素后,它可能在虚拟文件夹中显示为一个错误节点。 若要纠正此问题,请删除错误节点。 如果重命名某个元素,你可以再次将其从项目层次结构移到文件夹。
后退
定位到之前选择的项。
前进
定位到下一个选定项。
“查看类关系图”(仅适用于托管代码项目)
在“类视图”中选择一个命名空间或类型时,此选项变为可用。 选择一个命名空间后,类关系图显示其中的所有类型。 选择一个类型后,类关系图则仅显示该类型。
“类视图”设置工具栏上的“类视图设置”按钮具有以下设置:“属性”
描述
显示基类型
显示基类型。
显示项目引用
显示项目引用。
显示隐藏类型和成员
隐藏类型和成员(不供客户端使用)以浅灰色文本显示。
显示公共成员
显示公共成员。
显示保护成员
显示受保护的成员。
显示私有成员
显示私有成员。
显示其他成员
显示其他类型的成员,包括内部(或 Visual Basic 中的 Friend)成员。
显示继承成员
显示继承成员。
“类视图”中的快捷菜单(或右键单击)可能包含以下命令,具体取决于所选项目的类型:“属性”
描述
转到定义
如果在打开的项目中未定义该元素,请在源代码或“对象浏览器”中查找元素的定义。
浏览定义
显示“对象浏览器”中选定的项。
查找所有引用
查找当前选定的对象项,并在“查找结果”窗口中显示结果。
按类型筛选(仅适用于托管代码)
仅显示选定的类型或命名空间。 可以通过选择“查找”框旁边的“清除查找”(X) 按钮删除筛选器

复制
复制项的完全限定名。
按字母顺序排序
按名称的字母顺序列出类型和成员。
按成员类型排序
根据类型按顺序列出类型和成员(确保类排在接口之前、接口排在委托之前,方法排在属性之前)。
按成员访问排序
根据访问类型(如公共或私有)按顺序列出类型和成员。
按成员类型分组
根据对象类型将类型和成员分组。
转到声明(仅适用于 C++ 代码)
在源代码中显示类型或成员的声明(如果可用)。
转到定义
在源代码中显示该类型或成员的定义(如果可用)。
转到引用
在源代码中显示类型或成员的定义(如果可用)。
查看调用层次结构
在“调用层次结构”窗口中显示所选的方法。
调用“层次结构”窗口(Visual Basic、C#、C++)“调用层次结构”窗口显示调用给定方法或属性的位置。 它还列出了从该方法调用的方法。 你可以查看多个级别的调用关系图,该关系图显示指定范围内各个方法间调用方-被调用方的关系。可以通过选择编辑器方法(或者属性或者构造函数),然后再选择快捷菜单上的“查看调用层次结构”,则可以显示“调用层次结构”窗口 。 显示内容应与下图相似:通过使用工具栏上的下拉列表,可以指定层次结构的范围:解决方案、当前项目或当前文档。主窗格显示来自(到)方法的调用,“调用站点”窗格显示所选调用的位置。 针对虚拟或抽象的成员,显示的是“重写方法名”节点。 针对接口成员,显示的是“实现方法名”节点。“调用层次结构”窗口找不到方法组引用,方法组引用包括将方法添加为事件处理程序或分配给委托的位置。 若要查找这些引用,请使用“查找所有引用”命令。“调用层次结构”窗口中的快捷菜单包含以下命令:“属性”
描述
作为新根添加
将所选节点作为新根添加。
移除根
从树视图窗格中删除所选根节点。
转到定义
定位到方法的原始定义。
查找所有引用
在项目中查找对所选方法的所有引用。
复制
复制所选节点(但不包括其子节点)。
刷新
刷新信息。
对象浏览器“对象浏览器”窗口显示项目中的代码说明。可以通过窗口顶部的下拉列表筛选要查看的组件。 自定义组件可以包括托管代码可执行文件、库程序集、类型库和 .ocx 文件。 不能添加 C++ 自定义组件。自定义设置保存在 Visual Studio 用户应用程序目录 %APPDATA%\Microsoft\VisualStudio\16.0\ObjBrowEX.dat 中。“对象浏览器”的左窗格显示程序集。 可以展开程序集点以显示它们所包含的命名空间,然后展开命名空间以显示它们所包含的类型。 选择类型时,其成员(如属性和方法)在右窗格中列出。 右下窗格显示与所选项相关的详细信息。可以通过使用窗口顶部的“搜索”框搜索特定的项。 搜索不区分大小写。 搜索结果显示在左窗格中。 若要清除搜索,请选择“搜索”框旁边的“清除搜索”(X) 按钮
。“对象浏览器”跟踪所做的选择,并且你可以通过使用工具栏上的“前进”和“后退”按钮在选项之间进行导航
。通过选择某一项(程序集、命名空间、类型或成员),然后选择工具栏上的“添加引用”按钮,可以使用“对象浏览器”将程序集引用添加到打开的解决方案 。“对象浏览器”设置通过使用工具栏上的“对象浏览器设置”按钮,可以指定以下视图之一:“属性”
描述
查看命名空间
在左窗格中显示命名空间,而不是物理容器。 合并多个物理容器中存储的命名空间。
查看容器
在左窗格中显示物理容器,而不是命名空间。 “查看命名空间”和“查看容器”是相互排斥的设置 。
显示基类型
显示基类型。
显示隐藏类型和成员
在浅灰色文本中显示隐藏类型和成员(不供客户端使用)。
显示公共成员
显示公共成员。
显示保护成员
显示受保护的成员。
显示私有成员
显示私有成员。
显示其他成员
显示其他类型的成员,包括内部的(或 Visual Basic 中的 Friend)成员。
显示继承成员
显示继承成员。
显示扩展方法
显示扩展方法。
“对象浏览器”中的快捷菜单(或右键单击)可能包含以下命令,具体取决于所选项的类型:“属性”
描述
浏览定义
显示所选项的主节点。
查找所有引用
查找当前选定的对象项,并在“查找结果”窗口中显示结果。
按类型筛选
仅显示选定的类型或命名空间。 可以通过选择“清除搜索”按钮删除筛选器。
复制
复制项的完全限定名。
移除
如果范围是自定义组件集,请从该范围中删除所选组件。
按字母顺序排序
按名称的字母顺序列出类型和成员。
按对象类型排序
根据类型按顺序列出类型和成员(确保类排在接口之前、接口排在委托之前,方法排在属性之前)。
按对象访问排序
根据访问类型(如公共或私有)按顺序列出类型和成员。
按对象类型分组
根据对象类型将类型和成员分组。
转到声明(仅适用于 C++ 项目)
在源代码中显示类型或成员的声明(如果可用)。
转到定义
在源代码中显示该类型或成员的定义(如果可用)。
转到引用
在源代码中显示类型或成员的定义(如果可用)。
查看调用层次结构
在“调用层次结构”窗口中显示所选的方法。
代码定义窗口 (C++)“代码定义”窗口显示活动项目中所选 C++ 类型或成员的定义。 可以在代码编辑器或代码视图窗口中选择类型或成员。尽管此窗口是只读的,但你可以在其中设置断点或书签。 若要修改显示的定义,请选择快捷菜单上的“编辑定义”。 这将在代码编辑器中打开源文件,并将插入点移到定义开始的行。注意“代码定义”窗口仅能使用 C++ 代码。代码定义窗口“代码定义”窗口显示活动项目中所选 C++、C# 或 Visual Basic 类型或成员的定义。 可以在代码编辑器或代码视图窗口中选择类型或成员。尽管此窗口是只读的,但你可以在其中设置断点或书签。 若要修改显示的定义,请选择快捷菜单上的“编辑定义”。 这将在代码编辑器中打开源文件,并将插入点移到定义开始的行。“代码定义”窗口中的快捷菜单(或右键单击)可能包含以下命令:“属性”
描述
快速操作和重构
重命名
生成包含文件的关系图
查看定义
转到定义
查找定义(或分部类的多个定义)并将它们显示在“查找结果”窗口中。
转到声明
查找所有引用
查找解决方案中对类型或成员的引用。
查看调用层次结构
在“调用层次结构”窗口中显示方法。
切换标题/代码文件
运行测试
如果项目中有单元测试,则运行所选代码的测试。
调试测试
断点
插入断点(或跟踪点)。
运行到光标处
在调试模式下将程序运行到光标位置。
代码片段
剪切、复制、粘贴
批注
大纲显示
标准大纲显示命令。
重新扫描
编辑定义
将插入点移到代码窗口中的定义处。
选择编码
打开“编码”窗口,以便设置文件的编码。
“文档大纲”窗口可以将“文档大纲”窗口与设计器视图(如 XAML 页面设计器或 Windows 窗体设计器)或 HTML 页面一起使用。 此窗口在树视图中显示元素,以便你可以查看窗体或页面的逻辑结构,并查找深度嵌入或隐藏的控件。

我要回帖

更多关于 数据库如何查看表关系图 的文章

 

随机推荐