第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

如何使用 Entity Framework 的 DbContext

標(biāo)簽:
C#

微软的 Entity Framework 是一个开源的 对象-关系映射 ORM 框架,它帮助我们打通了 数据库的数据模型代码层的领域模型,Entity Framework 简化了应用程序对数据库的 CURD 操作,而且还向高层屏蔽了数据是如何持久化到数据库的。

说的具体一点就是 DbContext 充当了数据库到领域模型之间的桥梁,这篇文章我们将会讨论如何配置 DbContext 并使用 Entity Framework Core provider 对数据库进行 CURD 操作。

DbContext

DbContext 是 EF 中非常重要的一个组件,它扮演着 Database 的会话连接,使用它可以查询数据到你的 entitys 集合中,也可以通过它将 entitys 保存到底层数据库中, EntityFramework Core 中的 DbContext 拥有如下几个功能模块。

  • 连接管理

  • 查询数据

  • 持久化数据

  • 修改跟踪

  • 缓存

  • 事务管理

要想使用 EntityFramework,需要通过 nuget 引用 Microsoft.EntityFrameworkCore 包,可以通过 Visual Studio 2019 的 NuGet package manager 可视化界面安装 或者 通过 NuGet package manager 命令行工具输入以下命令:


dotnet add package Microsoft.EntityFrameworkCore

接下来讨论下如何在 ASP.Net Core 中使用 DbContext 。

创建 DbContext

首先创建一个 CustomContext 类,并继承 Entity Framework 中的基类 DbContext,如下代码所示:


    public class CustomContext : DbContext
    {
        public CustomContext(DbContextOptions options) : base(options)
        {
        }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
           //Write your code here to configure the context
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            //Write your code here to configure the model
        }
    }

可以看到 CustomContext 的构造函数中接受了 DbContextOptions 类型的参数,该类主要用于对 DbContext 做一些必要的参数配置,当然你也可以在 OnConfiguring() 中对 DbContext 进行配置,接下来的 OnModelCreating() 方法用于对 model 进行配置。

下面我在 CustomContext 中新增几个 DbSet 属性用来表示实体集合,如下代码所示:


    public class CustomContext : DbContext
    {
        public CustomContext(DbContextOptions options) : base(options)
        {
        }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
        }

        public DbSet Authors { get; set; }

        public DbSet Blogs { get; set; }
    }

    public class Author
    {
        public int AuthorID { get; set; }

        public string AuthorName { get; set; }
    }

    public class Blog
    {
        public int BlogID { get; set; }

        public string BlogName { get; set; }

        public int AuthorID { get; set; }
    }

注册 DbContext 注入到 ASP.NET Core 运行时

要想在 ASP.NET Core 中使用,需要将 CustomerContext 注入到 ServiceCollection 容器中,这里采用 SqlServer 作为底层存储,所以还需要在 NuGet 上引用 Microsoft.EntityFrameworkCore.SqlServer 包,接下来在 Startup.ConfigureServices() 中新增如下代码:


    public class Startup
    {
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();

            services.AddDbContext(options => options.UseSqlServer("Data Source=.; Initial Catalog=MyTest; Trusted_Connection=Yes"));
        }
    }

DbContext 依赖注入

现在 CustomContext 已经注入到容器了,接下来就可以在 HomeController 中通过依赖注入的方式获取 CustomerContext 实例,下面的代码片段展示了如何去实现。


    public class HomeController : Controller
    {
        ILogger logger;
        private CustomContext dbContext;

        public HomeController(ILogger logger, CustomContext dbContext)
        {
            this.logger = logger;
            this.dbContext = dbContext;

            dbContext.Database.EnsureCreated();
        }
    }

上面的代码,我用了 dbContext.Database.EnsureCreated(); 来确保数据库已经成功创建,执行完这句代码之后,数据库将会生成 MyTest 数据库 和 Author,Blog 两张表结构,如下图所示:

接下来在 Index 方法中插入一条记录并查询,效果如下:

这就是配置 EF 所要做的所有事情,现在你可以利用 CustomContext 去所 CURD 操作了,DbContext 在概念上类似 ObjectContext,表示一个 UnitOfWork 组合单元,并且 EF 是DDD领域的一个实现案例,DbContext 的职责就是负责 应用程序 和 数据库 之间的交互,关于 Entity Framework Core 的更多特性,我会放到后面的文章中和大家一起分享。

**更多高质量干货:参见我的 GitHub: [csharptranslate] github.com/ctripxchuang/csharptranslate **

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消