EF code first 数据模型创建数据库
首先:工具-NuGet包管理器-程序包管理器控制台,输入 Install-package EntityFramework ,安装EF环境
创建表:
新建类,比如名为student ,命名空间:using System.ComponentModel.DataAnnotations; 表中内容为
public class student { [Key] [Required] public int id { get; set; } public string name { get; set; } }
新建上下文类:比如名为studentcontext,命名空间:using System.Data.Entity; 表中内容为
public class studentcontext:DbContext { public studentcontext() : base("studentcontext") { } public DbSet<student> students { get; set; } }
然后再App.config配置文件中:
<connectionStrings> <add name="studentcontext" connectionString="Data Source=.;Initial Catalog=MySite;Persist Security Info=True;User ID=sa;Password=123" providerName="System.Data.SqlClient" /> </connectionStrings>
最后在program main函数中:
using(studentcontext st=new studentcontext()) { student s = new student(); st.students.Add(s); st.SaveChanges(); }
启动、执行,打开迁移 Enable-Migrations
此时数据库已创建完成,并自动创建Migrations文件夹,文件夹内有两个类文件;
---------------------------------
添加列:以增加 pwd 列为例
在student类表中,新增结构;
执行 Add-Migration studentpwd //后面为表名+列名
执行 Update-Database
---------------------------------
删除列:以删除 pwd 列为例
在student类表中,删去索要删的结构;
执行 Add-Migration Delstudentpwd //Del+表名+列名
执行 Update-Database
----------------------------------
修改列:将age修改为nick为例
在student类表中,修改结构;
执行 Add-Migration Renamenick //Modify+修改后的列名
得到迁移cs文件:并改为
public override void Up() { //AddColumn("dbo.students", "nick", c => c.String()); //DropColumn("dbo.students", "age"); RenameColumn("dbo.students", "age", "nick"); } public override void Down() { //AddColumn("dbo.students", "age", c => c.Int(nullable: false)); //DropColumn("dbo.students", "nick"); RenameColumn("dbo.students", "nick", "age"); }
执行 Update-Database
---------------------------------
设置主外键:
主键表中添加:
public virtual ICollection<bag> stu{ get; set; } //bag为外键表名
外键表中:
public virtual student stu{ get; set; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战