首页 > 编程 > .NET > 正文

创建ASP.NET数据存储层(2)

2024-07-10 12:55:15
字体:
来源:转载
供稿:网友


使用 visual studio .net 定义数据库表

  在 visual studio .net 中定义数据库表的最简单的方法是创建一个数据库图。这样,您可以在一个类似“所见即所得”的编辑器中定义所有细节。您只需展开 server explorer(服务器资源管理器)中相应的树,在 database diagrams(数据库图)项上单击鼠标右键,然后从上下文相关菜单中选择 new database diagram...(新建数据库图...),即可启动一个新的空白图。第一次启动某个图时,系统将要求您从数据库中选择一个表。因为您尚未创建任何表,所以可以忽略该对话框。现在,可以开始定义您的表了。

  在生成的《asp.net应用程序规划与设计》用户方案文档包含定义表所需的信息。学习定义如何在系统中添加新记录的方案,通常是了解需要存储哪些数据的最佳途径。有时,您需要查看诸如记录更新甚至是报告之类的其他方案,以确保没有遗漏其他字段。在本示例中,“添加记录”方案就是一个很好的参考方案。

  例如,以下是用于添加问题的方案:

  添加新问题

  向系统中添加一条新问题记录,其中包括标题、日期/时间、指明该问题所属类别的主题 id 以及问题正文。有时还需要提供问题提出者姓名及其电子邮件地址。添加新问题之后,将向调用函数返回一个唯一的整数问题 id。

  重要名词以粗体表示。阅读方案说明时,这些名词或表名(例如,“问题记录”就是一个很好的例子)往往能够表明需要存储哪些数据。使用上述信息,您可以在数据库图中添加一个新表并定义所需的列。下面的示例详细介绍了如何在数据库图中添加表。

  在图“surface”上单击鼠标右键并从上下文相关菜单中选择 new table...(新建表...)。输入 questions(问题)作为表名,然后单击 ok(确定)将其添加到图中。

  在 questions(问题)表对话框中,键入上文所述方案中提供的字段信息。例如,column name(列名)= id、data type(数据类型)= int、length(长度)= 4,并取消选择 allow nulls(允许为空)复选框。对该表的其余部分重复上述操作(参见图 3)。


图 3:questions(问题)表

  您将看到,第一列 (id) 旁边有一个小的金色键。它表示该字段是该表的主键字段。要设置主键字段,可以在列表中的列名上单击鼠标右键,然后从上下文相关菜单中选择 primary key(主键)。另外,还应将此 id 字段设置为以增量方式自动增加的标识列。这样,sql server 就可以为添加到表中的每条记录自动生成一个唯一的整数值。要进行此设置,请在该列上单击鼠标右键,从上下文相关菜单中选择 properties(属性),然后在 property pages(属性页)对话框中选择 columns(列)选项卡。其他的操作就很容易了(参见图 4)。


图 4:property pages(属性页)对话框中的 columns(列)选项卡

  使用“添加主题记录”和“添加解答记录”方案中的信息,可以创建其他两个表。请务必为每个表创建 id 列,并将这些列标记为标识列和主键。下面的图 5 显示了三个已完成的表。


图 5:三个已完成的表

  您会发现,这些表都通过连接线与数据库图连接起来。这些连接线表明表之间存在外键关系。例如,questions(问题)表中的 topicid 列与 topics(主题)表中的 id 列相关联。通过将这种关系存储到数据库中,您可以制定用以防止在数据库中保存非法数据的规则。本示例中的关系规则是,questions.topicid 列所允许的有效值只能是 topics.id 列中已存在的某条记录的值。

  您可以通过将 questions(问题)表中的 topicid 列拖放到 topics(主题)表中的 id 列上,来定义这些关系。此时将出现一个对话框,显示规则定义的详细信息并要求您按下 ok(确定)按钮进行确认(参见图 6)。


图 6:create relationship(创建关系)对话框

  您可能会发现,responses.questionid 和 questions.id 之间也定义了一个关系。

  注意:您可能已经注意到,我们还没有为专家定义任何表。我决定将有关专家的信息存储在一个 xml 文件中,而不是存储在数据库中。这样做的主要原因是我们可以借此讨论一下如何读写 xml 数据,以便在同一个应用中融合 xml 数据和关系数据。我们将在下一部分中讨论有关专家数据的问题。

  至此,数据库和表都已定义完毕。以上介绍了解决方案的实际数据存储过程。但是,我们还需要了解如何在表中读写信息。为此,我们将定义 sql server 中的存储过程。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表