Asp.net Core中使用Entity Framework Core CodeFirst
1.安装对应的包
"Microsoft.EntityFrameworkCore.Design": "1.1.0",
"Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0",
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
project.json tools节点更新
"tools": { "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final", "Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final", "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final" },
appsettiongs.json中配置连接串
"ConnectionStrings": { "DefaultDB": "Persist Security Info=True;Data Source=。;User ID=sa;Password=123;DataBase=test;" }
Entity & DbContext
public class VIP_Info { public VIP_Info() { } public Guid Id { get; set; } public string Name { get; set; } public string MobilePhone { get; set; } public string Sex { get; set; } public int Score { get; set; } }
public partial class SqlServerDbContext : DbContext { //方法一 //public SqlServerDbContext(DbContextOptions<SqlServerDbContext> options) //: base(options) //{ } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { string connectionString = (string) CacheHelper.CacheValue("sqldbConStr"); if (string.IsNullOrWhiteSpace(connectionString)) { var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); var configuration = builder.Build(); connectionString = configuration.GetConnectionString("DefaultDB"); CacheHelper.CacheInsertAddMinutes("sqldbConStr", connectionString, 120); } optionsBuilder.UseSqlServer(connectionString); } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); } public virtual DbSet<VIP_Info> VIP_Info { get; set; } }
关于数据库连接串的初始化
一种方式是直接在DBContext的OnConfiguring动态去获取appsettings.json里的链接串,另一种是采用注入的方式,在Startup.cs里配置,各有优劣;上例中采用的是每次动态获取的方式,获取的连接串用全局Cache缓存下,方便下次获取。
Startup.cs里配置连接串
public void ConfigureServices(IServiceCollection services) { services.AddApplicationInsightsTelemetry(Configuration); services.AddDbContext<SqlServerDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultDB"))); services.AddMvc() .AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new DefaultContractResolver(); }) .AddXmlDataContractSerializerFormatters(); }
public partial class SqlServerDbContext : DbContext { //方法一 public SqlServerDbContext(DbContextOptions<SqlServerDbContext> options) : base(options) { }
public class VipController : BaseController { private SqlServerDbContext _context; public VipController(SqlServerDbContext context){ _context=context; } .....
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架