EFCore之Code First

定义实体类和数据库上下文

新建一个Web API项目,使用NuGet引入如下组件

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.Design

Microsoft.EntityFrameworkCore.Tools

SqlServerContext 代码如下:

cs 复制代码
using Canteen.Services;
using EFCodeFirst.Models;
using Microsoft.EntityFrameworkCore;

namespace EFCodeFirst.Context
{
    public class SqlServerContext:DbContext
    {
        public SqlServerContext()
        {

        }
        public SqlServerContext(DbContextOptions<SqlServerContext> options) : base(options) { }
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
                var sqlServerConString = ConfigurationHelper.GetConfigValueByKey("ConnectionStrings:MSSQLDbConnection");// Gobal_Setting.Instance.GetSettingValue("ConnectionStrings:MSSQLDbConnection");
                optionsBuilder.UseSqlServer(sqlServerConString, sqlOptions =>
                {
                    sqlOptions.EnableRetryOnFailure(5, TimeSpan.FromSeconds(10), null); // 连接重试策略
                });
            }
            base.OnConfiguring(optionsBuilder);
        }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<T_Author>();
            base.OnModelCreating(modelBuilder);
        }

        public virtual DbSet<T_Author> Author { get; set; } 
    }
}

添加Author代码:

cs 复制代码
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace EFCodeFirst.Models
{
    [Table("T_Author")]
    public class T_Author
    {
        [Key]
        public int Id { get; set; }
        [Required]
        [StringLength(20)]
        public string gName {  get; set; }

        [StringLength(50)]
        public string CardID { get; set; }

        /// <summary>
        /// 信息
        /// </summary>
        [NotMapped]
        public string Info { get => $"姓名:{gName},地址:{CardID}"; }
    }
}

NuGet控制台中输入如下命令:

cs 复制代码
Add-Migration m1

然后更新数据库:

cs 复制代码
Update-Database

数据库里会添加表T_Author

相关推荐
代码搬运媛4 小时前
Jest 测试框架详解与实现指南
前端
counterxing5 小时前
我把 Codex 里的 Skills 做成了一个 MCP,还支持分享
前端·agent·ai编程
wangqiaowq5 小时前
windows下nginx的安装
linux·服务器·前端
之歆6 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
发现一只大呆瓜6 小时前
Vite凭什么这么快?3分钟带你彻底搞懂 Vite 热更新的幕后黑手
前端·面试·vite
Maimai108086 小时前
React如何用 @microsoft/fetch-event-source 落地 SSE:比原生 EventSource 更灵活的实时推送方案
前端·javascript·react.js·microsoft·前端框架·reactjs·webassembly
kyriewen8 小时前
产品经理把PRD写成“天书”,我用AI半小时重写了一遍,他当场愣住
前端·ai编程·cursor
humcomm8 小时前
元框架的工作原理详解
前端·前端框架
canonical_entropy8 小时前
Attractor Before Harness: AI 大规模开发的方法论
前端·aigc·ai编程
zhangxingchao9 小时前
多 Agent 架构到底怎么选?从 Claude Agent Teams、Cognition/Devin 到工程落地原则
前端·人工智能·后端