【MVC】Model的使用

1,Model的职责:html

  Model只负责与数据处理相关的工做。数据库

2,开发Model的基本观念ide

  采用ORM信息访问技术开发post

  ORM是将结构化的关系型数据,映射成面向对象模型。对于EF来讲,就是关系型数据库与.NET原生对象的转化。ui

3,从一个简单的.NET类别,经过EF转换到SQL Server数据库this

  • 默认状况下,名称为Id的属性在数据库中建立完成以后,会被标识成主键,且需被设置为Int类型,由于是值类型,不容许为Null。
  • 同理DateTime也是值类型,不容许为Null。
  • string为引用类型,转换为数据库类型为nvarchar(Max),容许为空。
  • 任何EF中的模型,均须要设置主键,不然会触发异常,默认状况下主键为声明为id的int类型属性。若是想设置其余属性为主键,需添加[Attribute]属性。
  • 若是设置的任意主键为int类型,会被自动加上自动编号的属性(即咱们常说的主键+1)。
  • 若是设置某一列不容许为空,为该列添加[Required]属性。
  • 声明容许NULL字段,好比DateTime默认不容许为空,以下设置:public DateTime? CreateOn{get;set;}
  • 设置字符串长度,添加MaxLength属性,[MaxLength(200)]
  • 声明字段默认值,好比说添加到数据库的时间,AddTime,取数据库当前时间就能够了。添加以下属性:[DatabaseGenerated(DatabaseGeneratedOption.Computed]

4,在CodeFirst模式中,声明Model后,而且在上下文文档中声明以下语句:spa

1 public DbSet<SharpL> Sharps { get; set; }

  在访问数据库后,表格就自动生成了,如图:code

     

 5,打开SQL server,打开数据库关系图,以下:server

     

  能够看出Memebers表中的NO字段是Guestbooks表中的外键,也就是member_NO字段,也就是说每个Guestbook对应于一个Member,而一个Member能够有多个Guestbook。代码以下:htm

复制代码
 1     public class Member
 2     {
 3         #region 其余字段
 4         [Key]
 5         public int NO { get; set; }
 6         [Required]
 7         [MaxLength(5)]
 8         public string Name { get; set; }
 9 
10         [MaxLength(200)]
11         public string Email { get; set; } 
12         #endregion
13 
14         public ICollection<Guestbook> GuestBooks { get; set; }
15     }
16     
17 public class Guestbook
18     {
19         #region 其余字段
20         [Key]
21         public int NO { get; set; }
22 
23         [Required]
24         public string Content { get; set; }
25         [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
26         public DateTime? CreateOn { get; set; } 
27         #endregion
28 
29         public Member member { get; set; }
30     }
复制代码

 

6,注意新建Model模型之后,必须编译之后,部分功能才能使用,如在Model文件夹下,新建一个Context类,想开启数据库自动迁移的功能(该功能详见Will哥MVC4 5.5),必须先进行编译,不然在使用 Enbale-Migrations 命令时,是没法经过的。一样的道理是,在为Controller添增强类型视图时,须要先对项目进行编译。

 

出处:http://www.cnblogs.com/SharpL/p/4592725.html

相关文章
相关标签/搜索