您的位置:首页 > 编程语言 > ASP

asp.net mvc 3.0详细笔记__04__项目文件结构详解_Models

2013-12-27 22:13 609 查看
欢迎一起来学习MVC 3.0,我们在一步一个脚印的做一个MVC 3.0的项目,期间会有很多值得探索的地方。将会学到Razor,Lampda,Entity
Framework,Linq C#新特性等等知识,一起加油吧!

本次重点突破:

详解Models文件夹的作用,地位。

小提示:本次将新建几个类文件:Album.cs
唱片

Genre.cs 种类

Artist.cs 艺术家

工具资源下载:http://download.csdn.net/detail/dhcsimida/6779357(下载过就不用重复下载了)

步骤如下:

(1)右键点击"Models"文件夹,依次选择"添加=>新建项"。



(2)选择“类”,名称设为“Album”,(中文名是唱片),点击“添加”



(3)生成如下类文件。



(4)按照(1)~(3)的步骤新建Genre.cs和Artist.cs两个类文件。

(5)依次向里面添加一些属性(对应数据库的字段),其中许多注释是非常重要的,如果你还是菜鸟就好好领回一下吧!具体代码如下,请复制。

Album.cs文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel;//手动引入,为DisplayName等属性提供支持。
using System.ComponentModel.DataAnnotations;//为ScaffoldColumn,Required,StringLength,Range等属性提供支持。

namespace MyMusicStore.Models
{
/// <summary>
/// 唱片模型类(在文件夹Models下建立的类,统称为模型类,因为它们就是数据表的面向对象的形式),此类对应的数据表是Album,
/// 模型类的一部分属性会对应数据表的字段,之所以说是一部分,是因为有的属性,不对应字段,而是用来关联表与表,例如本模型类的
/// Genre和Artist这涉及到延迟加载(Lazy Load),详情请参照http://blog.csdn.net/dhcsimida/article/details/17506733
/// </summary>
[Table("Album")]
public class Album
{
/// <summary>
/// 唱片Id
/// </summary>
[ScaffoldColumn(false)]
public int AlbumId { get; set; }//因为此字段AlbumId是由类名Album和Id组合而成,那么它就是数据表Album的主键,具体请参考:

/// <summary>
/// 唱片所属种类Id
/// </summary>
[DisplayName("种类")]//用来显示的文字(即数据操作时用"GenreId",而在页面显示是用"种类")
public int GenreId { get; set; }

/// <summary>
/// 唱片所属艺术家Id
/// </summary>
[DisplayName("艺术家")]
public int ArtistId { get; set; }

/// <summary>
/// 唱片标题
/// </summary>
[Required(ErrorMessage = "唱片必须有标题!")]
[StringLength(160)]
public string  Title { get; set; }

/// <summary>
/// 唱片地址
/// </summary>
[DisplayName("唱片地址")]
[StringLength(1024)]
public string AlbumArtUrl { get; set; }

/// <summary>
/// 唱片价格
/// </summary>
[Required(ErrorMessage = "唱片必须有价格!")]
[Range(0.01, 100.00, ErrorMessage = "范围必须从 0.01 到 100.00")]
public Nullable<decimal> Price { get; set; }

/// <summary>
/// 唱片种类模型类
/// </summary>
public virtual Genre Genre { get; set; }//virtual是延时加载,具体参照Lazy Load

/// <summary>
/// 艺术家模型类
/// </summary>
public virtual Artist Artist { get; set; }//virtual是延时加载,具体参照Lazy Load
}
}

Genre.cs文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace MyMusicStore.Models
{
[Table("Genre")]
public class Genre
{
/// <summary>
/// 唱片种类Id
/// </summary>
public int GenreId { get; set; }

/// <summary>
/// 唱片种类名称
/// </summary>
public string Name { get; set; }
}
}


Artist.cs文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace MyMusicStore.Models
{
[Table("Artist")]
public class Artist
{
/// <summary>
/// 艺术家Id
/// </summary>
public int ArtistId { get; set; }

/// <summary>
/// 艺术家名称
/// </summary>
public string Name { get; set; }
}
}

(6)注意事项:

如果在类名上方不加[Table("")]属性,则会出现问题:在之后的查询中会发现查找的数据表名称总是在我们类名称基础之上多个"s",这就是EF做的(错误演示地址:ASP.NET Entity Framework 查询数据表多个"s"的解决方法。)。所以,你要知道你的模型类名称对应的数据表名称是什么,然后在这里声明清楚。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: