zoukankan      html  css  js  c++  java
  • 【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后,并且在上下文文档中声明如下语句:

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

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

         

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

         

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

    复制代码
     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

  • 相关阅读:
    centos 查看版本(转)
    防火墙内设置FileZilla Server注意事项
    mycat读写分离与主从切换
    用mycat做读写分离:基于 MySQL主从复制
    mysql处理海量数据时的一些优化查询速度方法
    CentOS下LVS DR模式负载均衡配置详解
    Linux清除arp缓存
    扫描局域网内所有主机和MAC地址的Shell脚本
    Windows+Python 3.6环境下安装PyQt4
    Python 爬虫-豆瓣读书
  • 原文地址:https://www.cnblogs.com/mq0036/p/9083196.html
Copyright © 2011-2022 走看看