zoukankan      html  css  js  c++  java
  • EF CodeFirst 创建数据库

    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表中,自动产生外键关系

    欢迎转载或分享,如果文章对你有帮助,请给予推荐,欢迎交流及关注!!!
  • 相关阅读:
    C#递归拷贝文件夹下文件以及文件夹
    C# 获取文件名、目录、后缀、无后缀文件名、扩展名
    C#递归得到特定文件夹下问件
    Are you seeing high number of busyio or busyworker threads in the timeout exception?
    减少查询中的资源使用
    SQL性能优化前期准备-清除缓存、开启IO统计
    Sql server 存储过程批量插入若干数据。
    python读取excel中单元格的内容返回的5种类型
    Python读取excel数据类型处理
    【转】 如何导入excel数据到数据库,并解决导入时间格式问题
  • 原文地址:https://www.cnblogs.com/Gyutao/p/3429381.html
Copyright © 2011-2022 走看看