本文继续学习之旅,一步一步通过ASP.NET MVC 1.0 实现NerdDinner 范例程序。
创建Model模型
在Model-View-Controller 框架中,model表示应用程序的数据对象,以及相应的业务领域逻辑,包括数据验证和业务规则。model是MVC应用程序的核心部分,下面我们会看到model的作用。
ASP.NET MVC框架支持使用任意数据访问技术,开发人员可以选择大量的.NET 数据访问技术实现model,如LINQ to Entities、LINQ to SQL、NHibernate、LLBLGen Pro、SubSonic、WilsonORM、或者基本的ADO.NET DataReaders、DataSets等等。
对于本范例程序NerdDinner,我们将采用LINQ to SQL创建一个简单的业务领域模型,非常接近于数据库的设计,并增加了一些定制的验证逻辑和业务规则。接下来实现一个repository类,帮助抽象化数据实体的实现,允许我们轻松实现单元测试。
LINQ to SQL
LINQ to SQL是.NET 3.5的ORM(Object Relational Mapper)部分。LINQ to SQL提供了一个简单的方式映射数据表到.NET 类。对于我们的NerdDinner范例程序,我们将映射Dinners和RSVP数据表到Dinner和RSVP模型类。Dinners和RSVP数据表中的列将映射为Dinner和RSVP模型类的属性。每一个Dinner和RSVP对象将表示Dinners或RSVP数据表中的一条单独的数据记录。
LINQ to SQL避免让我们手动创建SQL脚本从数据库中检索和更新Dinner和RSVP对象。在访问或更新数据库记录时,LINQ to SQL将负责生成合适的SQL执行逻辑。我们可以使用VB和C#支持的LINQ语言写查询表达式,检索Dinner和RSVP对象。这样可以大量减少代码行,构建清晰的应用程序。
增加LINQ to SQL类到项目程序中
现在终于可以回到我们的NerdDinner应用程序了!右键点击Models文件夹,选择Add -> New Item 菜单项。
在弹出的Add New Item对话框,如下图所示。选择LINQ to SQL Classes模板,命名为NerdDinner.dbml,然后点击Add 按钮。Visual Studio 将添加NerdDinner.dbml 文件到\Models目录,并自动打开LINQ to SQL对象关系设计器。
使用LINQ to SQL 创建Data Model Classes
LINQ to SQL允许我们从现有的数据库快速数据模型类。我们可以在Server Explorer窗口打开NerdDinner数据库,并选择需要建模的数据表。将表Dinners和RSVP表拖拉到NerdDinner.dbml设计器中,如下图所示。
默认情况下,LINQ to SQL设计器在基于数据表创建类时,自动复数化表和列名。例如,范例中的Dinners表自动产生Dinner类。这一类的命名有助于我们的模型类符合.NET命名规范。但是,如果你不喜欢设计器自动生成的类或属性名,你可以在设计器中编辑或者通过属性列表进行更新。
另外,默认情况下,LINQ to SQL设计器也会自动监视主键/外键关系,并基于这些关系,创建不同模型类之间的关联关系。如上图所示,当我们拖拉Dinners 和 RSVP表到LINQ to SQL设计器上时,自动创建1对多的关联关系,图中通过一个箭头进行表示。
上述关联关系将让LINQ to SQL增加一个强类型的Dinner属性到RSVP类中,开发人员可以使用指定RSVP的Dinner属性访问关联的实体。也会让Dinner类有一个强类型的RSVP集合属性,允许开发人员检索和更新Dinner关联的RSVP对象集合。
下面,我们看看当创建RSVP对象,并增加到Dinner’s RSVP集合是,Visual Studio 的智能提示:
从上可以看到LINQ to SQL如何为Dinner对象创建RSVPs 集合,我们使用这个关联数据表Dinner和RSVP之间的一个外键关系。
如果你不喜欢设计器的建模或命名的关联关系,你可以更改。点击设计器中的关联箭头,访问属性窗口,可以进行重命名、删除或者更改。对于NerdDinner应用程序,我们将使用默认的设置。
今天就到这里了,明天继续翻译ASP.NET MVC eBook – 开发NerdDinner 范例程序向导。欢迎访问http://blog.EntLib.com 博客平台获取更多的MVC学习资料。
相关资源下载链接:
1. ASP.NET MVC 1.0 正式版发布了!!!
http://forum.entlib.com/Default.aspx?g=posts&t=464
2. 免费ASP.NET MVC eBook 向导-电子书下载
http://blog.entlib.com/entlibforum/archive/2009/03/12/asp.net-mvc-ebook.aspx