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;
        }

   .....

 

posted @   jackchain  阅读(833)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示