• EF的代码优先设计


     CodeFirst 用中文说是代码优先,此技术可以让我们先写代码,然后由Entity Framework根据我们的代码建立数据库

    接下来用学生这个例子来演示,有学生表,课程表,和成绩表三张表

    首先是Model层

    学生表

    复制代码
    复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    /**/
    using System.ComponentModel.DataAnnotations;//验证
    
    namespace CodeFirstDemo.Models
    {
        public class Student
        {
            [Key]
            public int Id { get; set; }
            [Required]
            [StringLength(50)]
            public string Name { get; set; }
        }
    }
    复制代码
    复制代码

    课程表

    复制代码
    复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    /**/
    using System.ComponentModel.DataAnnotations;//验证
    
    namespace CodeFirstDemo.Models
    {
        public class Course
        {
            [Key]
            public int Id { get; set; }
            [Required]
            [StringLength(50)]
            public string Name { get; set; }
        }
    }
    复制代码
    复制代码

    成绩表

    复制代码
    复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    /**/
    using System.ComponentModel.DataAnnotations;//验证
    namespace CodeFirstDemo.Models
    {
        public class Score
        {
            [Key]
            public int Id { get; set; }
    
            public Student Student { get; set; }
    
            public Course Course { get; set; }
    
           
        }
    }
    复制代码
    复制代码

    [Key]表示在数据库中该字段为主键,[Required]表示不为空,[StringLength]也就是长度了

    这一步完成之后,我们要建立一个StudentInfoEntities的类,这个类要继承自DbContext,而DbContext类在System.Data.Entity命名空间下,需引用EntityFramework.dll类库,

    如安装不了,可以去Visual Studio Gallery下载,其实,只需要引用一个叫做Entity Framework的dll类库即可

    StudentInfoEntities类

    复制代码
    复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    /**/
    using System.Data.Entity;
    
    namespace CodeFirstDemo.Models
    {
        public class StudentInfoEntities:DbContext
        {
            public DbSet<Course> Courses { get; set; }
            public DbSet<Score> Scores { get; set; }
            public DbSet<Student> Students { get; set; }
        }
    }
    复制代码
    复制代码

    接着,我们在Web.Config里配置一下数据库的连接字符串

      <connectionStrings>
        <add name="StudentInfoEntities" connectionString="Data Source=.SQLEXPRESS; User=test;Password=test;Initial Catalog=StudentInfo;Integrated Security=True"
          providerName="System.Data.SqlClient" />
      </connectionStrings>

    最后,新建一个HomeController

    复制代码
    复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    /**/
    using CodeFirstDemo.Models;
    namespace CodeFirstDemo.Controllers
    {
        public class HomeController : Controller
        {
            private StudentInfoEntities db = new StudentInfoEntities();
            public string Index()
            {
                var data = db.Students.ToList();
                return "Database is build success!";
            }
    
        }
    }
    复制代码
    复制代码

    点击调试,触发一下,查看数据库

    同时,您会发现,在Score表中,自动产生外键关系

  • 相关阅读:
    2018 eclipse安装反编译插件
    Buffer flip()方法
    区块链2
    Mist 转移默认区块存储位置方法
    区块链1
    如何在Ubuntu下安装”.deb“、”.bin“、”.tar.gz“、”.tar.bz2“格式的软件包!
    eclipse 性能调优之内存分配
    linux中搭建java开发环境
    在 Ubuntu 14.04 上安装 Ubuntu Tweak 0.8.8
    Ubuntu各个版本的介绍
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/5579570.html
Copyright © 2020-2023  润新知