ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

EF - CodeFirst 详细操作流程

2020-06-10 22:05:48  阅读:300  来源: 互联网

标签:CodeFirst set ClassInfo get 流程 EF 数据库 public


比如, 现在我们需要两张表, "学生表" 和 "班级表" , 一对多关系, 怎么用CodeFirst的方式创建数据库数据表

1.创建两个实体类
 

public class StudentInfo
{
//特性标签Key, 标记Id为实例的唯一标识符, 即主键
[Key]
public int Id { get; set; }
[StringLength(32)] //varchar 必须指定长度, 否则默认长度为max
[Required] //不允许为空
public string StuName { get; set; }
public DateTime SubTime { get; set; }

//CodeFirst中体现两张表的关系
//相当于EF模型中的导航属性 
//一个学生 只能对应 一个班级
public virtual ClassInfo ClassInfo { get; set; }
}

public class ClassInfo
{
[Key]
public int Id { get; set; }
[StringLength(32)]
[Required]
public string ClassName { get; set; }
public DateTime CreateTime { get; set; }

//CodeFirst中体现两张表的关系
//相当于EF模型中的导航属性 
//一个班级 可以对应 多个学生
public virtual ICollection<StudentInfo> StudentInfo { get; set; }
}

2.创建和数据库交互的EF上下文类, 继承自DbContext

public class CodeFirstDbContext : DbContext
{
//1.需要一个构造方法, 调用父类的构造方法, 传入 数据库连接字符串 的名字作为参数
public CodeFirstDbContext() : base("name=connStr") //需配置数据库连接字符串
{

}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//2.去掉 将表名设置为实体类型名称的复数版本 的约定(如 对应ClassInfo 在数据库生成 ClassInfos表)
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
//3.
public DbSet<StudentInfo> StudentInfo { get; set; }
public DbSet<ClassInfo> ClassInfo { get; set; }
}

3.配置数据库连接字符串, 名称与 EF上下文操作类 的构造方法中传入的参数保持一致

<connectionStrings>
<add name="connStr" connectionString="server=.;uid=sa;pwd=123456;database=CodeFirstModel" providerName="System.Data.SqlClient" />
</connectionStrings>

4.执行代码, 生成数据库, 并添加一条数据

class Program
{
static void Main(string[] args)
{
CodeFirstDbContext db = new CodeFirstDbContext();
db.Database.CreateIfNotExists(); //如果数据库不存在就自动创建

ClassInfo classInfo = new ClassInfo();
classInfo.ClassName = "0302班";
classInfo.CreateTime = DateTime.Now;
db.ClassInfo.Add(classInfo);
db.SaveChanges();
}
}

5.打开sqlserver数据库,查看结果

 

 


————————————————
版权声明:本文为CSDN博主「sosososolong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sosososolong/article/details/87896733

标签:CodeFirst,set,ClassInfo,get,流程,EF,数据库,public
来源: https://www.cnblogs.com/cxxtreasure/p/13089416.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有