【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绑定器是在什么时候执行的?又或是执行的过程 ...
随机推荐
- 关于controller中调用多个service方法的问题
一般service方法是有事务的,把所有操作封装在一个service方法中是比较安全的. 如果在controller中调用多个service方法,只有查询的情况下是可以这样的.
- Fair CodeForces - 987D (bfs)
链接 大意:给定无向图边权均为1, 每个节点有一种货物, 对于每个节点, 求出拿到$s$种不同货物的最短距离 (每种货物独立计算,并且不用返回) 因为$s$较小, 直接枚举每种货物即可 所以问题就转化 ...
- hdu2609 最小表示法
Give you n ( n < 10000) necklaces ,the length of necklace will not large than 100,tell me How man ...
- Homebrew cask
在MacOS中用Homebrew安装软件很方便, 但用 brew install 安装的软件并不会在Launchpad中创建快捷方式, 这很不方便. 所以, 可以用 brew cask install ...
- python中的注意事项
.python 中的 and 从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值: or 也是从左到有计算表达式,返回第一个为真的值: 其中数字 0 是假,其他都是真: 字 ...
- keras-anomaly-detection 代码分析——本质上就是SAE、LSTM时间序列预测
keras-anomaly-detection Anomaly detection implemented in Keras The source codes of the recurrent, co ...
- gitlab永久设置密码
在 .gitconfig 文件中加入: [credential] helper = store .git-credentials close address
- httpclient 连接参数
http.socket.timeout(读取超时) 套接字毫秒级超时时间(SO_TIMEOUT),这就是等待数据,换句话说,在两个连续的数据包之间最大的闲置时间. 如果超时是0表示无限大的超时时间,即 ...
- linux page table entry struct
Page Table Entry The access control information is held in the PTE and is CPU specific; figure bit f ...
- 快速切题 cf118A
这教导人们一定要看题,要看题,元音包含了‘y’,完毕,要看题啊 #include <cstring> #include <cstdio> #include <cctype ...