基于c#的 EntityFramework搭建
2022/3/20 17:29:04
本文主要是介绍基于c#的 EntityFramework搭建,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、数据库的建立
安装Navicat for MySQL,用于连接Mysq数据库,可以进行可视化操作
打开之后,新建连接,输入连接名(自定义),主机名(IP地址localhost也就是本地的IP地址,localhost=127.0.0.1),端口号(默认端口号3306),用户名(root最高的账号),密码,这里测试的是连接本地MySQL数据库
新建数据库,取名为test
在test数据库下建立三张表,student,teacher,grade
二、EF框架简介
1、什么是ORM框架
ORM全称为Object Relational Mapping ,即对象关系映射,作用在关系型数据库中和对象的一个映射。
//student实体 public class student { public string name; public int id; }
对应数据库:
表(student) | 对象(student) |
---|---|
标签(name,id) | 字段(name, id) |
数据(“张三”,1001) | 值(“张三”,1001) |
2、什么是EF框架
EF框架全称是Entity Framework ,是ADO.NET中一套支持开发面向数据的软件应用框架,相当于c#的一个ORM框架。
EF框架的三种开发模式:DataBase First 数据库优先,Model First 模型优先,Code First代码优先。
三、EF框架的搭建
创建一个控制台项目
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uxOAzb1y-1647763959187)(C:\Users\Administrator\Desktop\c#\控制台.PNG)]
取名demo
打开管理NuGet程序包
安装**Microsoft.EntityFrameworkCore,**Microsoft.EntityFrameworkCore.Abstractions,Pomelo.EntityFrameworkCore.MySql包
新建一个类,命名为MySQLDB;
打开MySQLDB类,输入以下代码:
using Microsoft.EntityFrameworkCore; //引入包 namespace demo { public class MySQLDB:DbContext //继承与DbContext { string connstring ="server=localhost;database=test;user=root;password=123456;charset=utf-8" protected override void OnConfiguring(DbContextOptionsBuider optionBuilder) { optionsBuilder.UseMySql(connstring); } } }
新建三个类,分别为student.cs,teacher.cs,grade.cs对应数据库中的三张表;在类中各添加它们对应的属性;
student类
namespace demo { public class student { public int StudentID{get;set;} public string userName{get;set;} public int TeacherID{get;set;} } }
teacher类
namespace demo { public class teacher { public int TeacherID{get;set;} public string TeacherName{get;set;} } }
grade类
namespace demo { public class grade { public int GradeID{get;set;} public float Chinese{get;set;} public float Math{get;set;} public float English{get;set;} public int StudentID{get;set;} } }
在MySQLDB类中,添加前三个类的DbSet
using Microsoft.EntityFrameworkCore; //引入包 namespace demo { public class MySQLDB:DbContext //继承与DbContext { string connstring = "server=localhost;database=test;user=root;password=123456;charset=utf-8"; protected override void OnConfiguring(DbContextOptionsBuider optionBuilder) { optionsBuilder.UseMySql(connstring); } } public DbSet<student>student{get;set;} public DbSet<teacher>teacher{get;set;} public DbSet<grade> grade{get;set;} }
建好之后的demo文件
打开main类,进行测试是否连接成功
internal class main { static void Main(string[] args) { using(var db = new MySQLDB) { Student stu = db.student.Find(1001); Console.WriteLine(stu.userName); } Console.ReadKey(); } }
运行结果:
三、Linq的链表查询
1.添加学生信息
void StudentAdd(student student) { using(MySQLDB db = new MySQLDB()) { int teracher_value = 0; var query = db.student.Tolist(); for (int i=0; i< query.Count;i++) { if(query[i].StudentID == student.StudentID) { if(query[i].TeacherID == student.TeacherID) { teacher_value++; } Console.WriteLine("学号已存在,请重新输入"); return; } } if(teacher_value == 0) { Console.WriteLine("教师不存在,请重新输入") } db.student.Add(student); db.SaveChanges(); Console.WriteLine("添加成功"); } }
2.三张表连接查询
结果:
这篇关于基于c#的 EntityFramework搭建的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具