EF学习之CodeFirst(一)--创建Model

一、创建Model

创建Model类有两种方式:

1、直接创建model

  所有约束条件都以特性的方式写在model的属性上面,映射到数据库的table表名标识在class上,例如:

   [Table("UserInfo")]
    public class User
    {
        [Key]//主键            
        public int ID { get; set; }

        [MaxLength(50)]//最大长度
        [Required]//不可为空
        public string UserName { get; set; }

        [MaxLength(50)]
        [Required]
        [DataType(DataType.Password)]//设置与字段关联的附加类型
        public string Password { get; set; }       
    }
View Code

  以上代码要引用命名空间:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

2、Model和约束条件分开

  将属性和约束分开,有利于保持类的完整性,而且修改起来更加方便,在使用的过程中更推荐这种写法。

  创建的Model还是放在Models文件夹下,还是以前的写法,例如:

   public class User
    {
        public int ID { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
    }
View Code

  将相关约束放在另外一个文件夹Maps里面,例如:

public class UserMap : EntityTypeConfiguration<User>
    {
        public UserMap()
        {
            //主键
            this.HasKey(t => t.ID);

            //设置属性约束
            this.Property(t => t.UserName).IsRequired().HasMaxLength(50);
            this.Property(t => t.Password).IsRequired().HasMaxLength(50);

            //表名和列名映射
            this.ToTable("UserInfo");
            this.Property(t => t.ID).HasColumnName("ID");
            this.Property(t => t.UserName).HasColumnName("UserName");
            this.Property(t => t.Password).HasColumnName("Password");
        }
    }
View Code

  以上要继承EntityTypeConfiguration<T>,在构造函数里面写入相关代码,并且引用命名空间:

using System.Data.Entity.ModelConfiguration;

 二、创建数据库上下文

  创建数据库上下文需继承DbContext类,构造函数里面指定数据库连接的字符串,表名用DbSet来实例化,例如:

  针对第一种创建的Model:

 public class DBContext : DbContext
    {
        public DBContext()
            : base("name=myConn")
        {
        }

        public DbSet<User> UserInfo { get; set; }
    }
View Code

  针对第二种创建的Model,需要将Map和Class映射:

public class DBContext : DbContext
    {
        public DBContext()
            : base("name=myConn")
        {
        }

        public DbSet<User> UserInfo { get; set; }

        /// <summary>
        /// 映射约束
        /// </summary>
        /// <param name="modelBuilder"></param>
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Configurations.Add(new UserMap());
        }
}
View Code

三、配置数据库连接字符串

在webConfig文件里配置数据库连接字符串:

<connectionStrings>
    <add name="myConn" providerName="System.Data.SqlClient" connectionString="Data Source=.;Initial Catalog=EFTest;Integrated Security=SSPI;" />
  </connectionStrings>
View Code

四、配置Global

在Application_Start方法里添加如下代码:

//如果数据库不存在就新建数据库
            Database.SetInitializer(new CreateDatabaseIfNotExists<DBContext>());
View Code

五、添加Controller,运行即可。

 

 

 

 

posted @ 2015-06-08 11:13  Wico  阅读(747)  评论(0编辑  收藏  举报