【MVC】Model的使用
1,Model的职责:
Model只负责与数据处理相关的工作。
2,开发Model的基本观念
采用ORM信息访问技术开发
ORM是将结构化的关系型数据,映射成面向对象模型。对于EF来说,就是关系型数据库与.NET原生对象的转化。
3,从一个简单的.NET类别,通过EF转换到SQL Server数据库
- 默认情况下,名称为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后,并且在上下文文档中声明如下语句:
public DbSet<SharpL> Sharps { get; set; }
在访问数据库后,表格就自动生成了,如图:
5,打开SQL server,打开数据库关系图,如下:
可以看出Memebers表中的NO字段是Guestbooks表中的外键,也就是member_NO字段,也就是说每一个Guestbook对应于一个Member,而一个Member可以有多个Guestbook。代码如下:

public class Member
{
#region 其他字段
[Key]
public int NO { get; set; }
[Required]
[MaxLength()]
public string Name { get; set; } [MaxLength()]
public string Email { get; set; }
#endregion public ICollection<Guestbook> GuestBooks { get; set; }
} public class Guestbook
{
#region 其他字段
[Key]
public int NO { get; set; } [Required]
public string Content { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime? CreateOn { get; set; }
#endregion public Member member { get; set; }
}

6,注意新建Model模型以后,必须编译以后,部分功能才能使用,如在Model文件夹下,新建一个Context类,想开启数据库自动迁移的功能(该功能详见Will哥MVC4 5.5),必须先进行编译,否则在使用 Enbale-Migrations 命令时,是无法通过的。同样的道理是,在为Controller添加强类型视图时,需要先对项目进行编译。
出处:http://www.cnblogs.com/SharpL/p/4592725.html
【MVC】Model的使用的更多相关文章
- ASP.NET MVC Model验证(五)
ASP.NET MVC Model验证(五) 前言 上篇主要讲解ModelValidatorProvider 和ModelValidator两种类型的自定义实现, 然而在MVC框架中还给我们提供了其它 ...
- ASP.NET MVC Model验证(四)
ASP.NET MVC Model验证(四) 前言 本篇主要讲解ModelValidatorProvider 和ModelValidator两种类型的自定义实现,前者是Model验证提供程序,而Mod ...
- ASP.NET MVC Model验证(三)
ASP.NET MVC Model验证(三) 前言 上篇中说到在MVC框架中默认的Model验证是在哪里验证的,还讲到DefaultModelBinder类型的内部执行的示意图,让大家可以看到默认的M ...
- ASP.NET MVC Model验证(二)
ASP.NET MVC Model验证(二) 前言 上篇内容演示了一个简单的Model验证示例,然后在文中提及到Model验证在MVC框架中默认所处的位置在哪?本篇就是来解决这个问题的,并且会描述一下 ...
- ASP.NET MVC Model验证(一)
ASP.NET MVC Model验证(一) 前言 前面对于Model绑定部分作了大概的介绍,从这章开始就进入Model验证部分了,这个实际上是一个系列的Model的绑定往往都是伴随着验证的.也会在后 ...
- ASP.NET MVC Model绑定(六)
ASP.NET MVC Model绑定(六) 前言 前面的篇幅对于IValueProvider的使用做个基础的示例讲解,但是没并没有对 IValueProvider类型的实现做详细的介绍,然而MVC框 ...
- ASP.NET MVC Model绑定(五)
ASP.NET MVC Model绑定(五) 前言 前面的篇幅对于IValueProvider的获取位置和所处的生成过程做了讲解,本篇将会对IValueProvider的使用做个基础的示例讲解,读完本 ...
- ASP.NET MVC Model绑定(四)
ASP.NET MVC Model绑定(四) 前言 前面的篇幅对于Model绑定器IModelBinder以及实现类型.Model绑定器提供程序都作了粗略的讲解,可以把Model绑定器想象成一个大的容 ...
- ASP.NET MVC Model绑定(三)
ASP.NET MVC Model绑定(三) 前言 看过前两篇的朋友想必对Model绑定有个大概的了解,然而MVC框架给我们提供了更高的可扩展性的提供程序编程模式,也就是本篇的主题了,会讲解一下Mod ...
- ASP.NET MVC Model绑定(二)
ASP.NET MVC Model绑定(二) 前言 上篇对于Model绑定的简单演示想必大家对Model绑定的使用方式有一点的了解,那大家有没有想过Model绑定器是在什么时候执行的?又或是执行的过程 ...
随机推荐
- android--------Retrofit+RxJava的使用
Retrofit是Square公司开发的一款针对Android网络请求的一个当前很流行的网络请求库. http://square.github.io/retrofit/ https://github. ...
- 利用nodeJs anywhere搭建本地服务器环境
1.npm install anywhere -g 如果是mac系统会提示你权限不够,需要在代码前加上 sudo获取管理员权限.即sudo npm install anywhere -g. 2.安装完 ...
- hdu1584
蜘蛛牌 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- Rancher 企业级docker管理平台
启动Rancher 加入ca证书: docker run -d --restart=unless-stopped -p 8080:8080 -v /root/cacert.crt:/var/lib/ ...
- PHP:第二章——PHP中的equire与incude语句
<?php header("Content-Type:text/html;charset=utf-8"); /* include: include_once//include ...
- KMP 求next数组
一直没理解.看这个倒是看懂了.但是博主代码好像有点问题吖.测试并不正确.思想还是没错的. 转载自:http://www.tuicool.com/articles/yayeIbe
- php截取中文字符串 GB2312 utf-8
UTF-8截取中文字符串 function Cn_Substr($string, $length) { preg_match_all("/[\x01-\x7f]|[\xc2-\xdf][\x ...
- 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 AD转换接 ...
- 高版本的jdk编译过的项目移到低版本的JDK的eclipse中出错的问题
由于2台电脑安装的jdk版本不一样,导致从一台电脑移动项目到另一台电脑上时,运行出现了错误,错误信息如下: 主要是原先项目运行的JDK版本为1.8, 而要移过去的电脑的jdk是1.7的,首先已经把bu ...
- 写在连载之前——DIY微型操作系统篇
这个博客开了这么久都没写过什么东西.可能是因为我想写的东西在网上都能找得到,所以自己也懒得去写了. 但是这次当我在看<30天自制操作系统>这本书的时候发现,如果不用作者原版的光盘软件,要自 ...