东莞市盛裕绒艺玩具有限公司

东莞市盛裕绒艺玩具有限公司

乐众集团官方线路

13927313907
联系方式
全国服务热线: 13927313907

咨询热线:15527815479
联系人:潘总
地址:江苏省南京市白下区168号

EF之Code First代码优先

来源:乐众集团官方线路   发布时间:2019-11-29   点击量:272

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.cspublic virtual IList<User> Users { get; set; }

生成完,它会出现一个RoleUser表,这样就达到了多对多的关系.

 

, 1, 0, 9);

相关产品

COPYRIGHTS©2017 乐众集团官方线路 ALL RIGHTS RESERVED 备案号:272