EF之Code First代码优先

1.前言

通过英文可知,表示的是代码优先,一般创建EF都是先创建数据库,创建根据数据库的EF实体模型,而code - first 则是反过来!。。。

2.代码实战

 

我们这次创建的不是原来的数据库EF设计器,而是空的Code first 模型。如果说你的项目引用中没有entity framkwork,则需要去nuget程序包中安装ef框架(entity)

创建一个类,这个类就是数据的上下文,它的目录在MVC项目中的Model文件夹,base中的是你所创建的数据库名称,而你创建的表也是在model的这个文件夹中,

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace MyFirstCode.Models
{
    public class Grade
    {
        public int GradeID { get; set; }
        [Required]//必须唯一
        [DisplayName("学生姓名")] //列名
        [Column("SName")]//数据库中的列名
        [StringLength(20)]//字符串长度
        public string GradeName { get; set; }

    }
}
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
这是添加字段约束用到的命名空间

接下来看下我们的连接字符串部分:
 <connectionStrings>
    <add name="MyDemoDB" connectionString="server=.;database=MyDemoDB;uid=sa;pwd=sa" providerName="System.Data.SqlClient"/>
  </connectionStrings>
 
  
providerName="System.Data.SqlClient" 这个参数代表的是数据的来源,即来源于该命名空间下,我们也可以写成MySqlClient,当然前提是你引用了MySqlClient,呵呵,这样就对了项目迁移带来了很大的方面.

1对多的关系如何写?
假如有Student 和 Grade两个表 每个年纪有很多学生.
Student.cs:
 [ForeignKey("NianJi")]
        public int GradeID { get; set; }

        /// <summary>
        /// virtual 虚拟的。 延迟加载
        /// </summary>
        public virtual Grade NianJi { get; set; }
Grade.cs:
 public class Grade
    {
        public int GradeID { get; set; }

        public string GradeName { get; set; }

        public virtual IList<Student> Students { get; set; }
    }

结果如图:

 

多对多的关系怎么写?
列入角色和用户表,每个用户有很多角色即role与user表
User.cs
 public virtual IList<Role> Roles { get; set; }
Role.cs
public virtual IList<User> Users { get; set; }
生成完,它会出现一个RoleUser表,这样就达到了多对多的关系.
 
  

using (var context = new Model1())
{
context.Database.Initialize(true);
}


对这个上下文进行操作的时候它才会被创建 2018-11-15 21:57:15
 
  
 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值