国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

4.1EF Core

這篇具有很好參考價(jià)值的文章主要介紹了4.1EF Core。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

4.1EF Core

EF Core是微軟官方的ORM框架,ORM即對(duì)象關(guān)系映射,也就是我們可以直接操作C#中的對(duì)象就可以完成數(shù)據(jù)庫的操作。

EF Core環(huán)境搭建

  1. 首先要?jiǎng)?chuàng)建C#對(duì)象,用以對(duì)應(yīng)數(shù)據(jù)庫中的表,該C#對(duì)象也成為實(shí)體類。
public class Book
{
    //必須是屬性
    public long Id { get; set; }//主鍵
    public string Title { get; set; }//標(biāo)題
    public DateTime PubTime { get; set; }//發(fā)布日期
    public double Price { get; set; }//單價(jià)
    public string AuthorName { get; set; }//作者名字
}
  1. 根據(jù)所用的數(shù)據(jù)庫選擇NuGet包,本文使用SQLite數(shù)據(jù)庫,所以安裝Microsoft.EntityFrameworkCore.Sqlite。

  2. 需要實(shí)現(xiàn)一個(gè)配置類,用來說明實(shí)體類和數(shù)據(jù)庫表是怎么映射的,該配置類要實(shí)現(xiàn)IEnityTypeConfiguration接口。

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;

class BookEntityConfig : IEntityTypeConfiguration<Book>  //指定是對(duì)那個(gè)類進(jìn)行配置
{
    public void Configure(EntityTypeBuilder<Book> builder) //實(shí)現(xiàn)接口
    {
        builder.ToTable("T_Books"); //實(shí)體對(duì)象在數(shù)據(jù)庫中表的名字是“T_Books”
        //沒有詳細(xì)設(shè)置每個(gè)屬性在數(shù)據(jù)庫中的列明和數(shù)據(jù)類型
        //會(huì)默認(rèn)吧屬性名字作為列明,并根據(jù)屬性類型來推斷數(shù)據(jù)庫中的數(shù)據(jù)類型
        
        //可以根據(jù)需要修改實(shí)體類的配置,進(jìn)而修改數(shù)據(jù)庫的表
        //HasMaxLength(50):最大長(zhǎng)度為50 IsRequired():不可為空
        builder.Property(e => e.Title).HasMaxLength(50).IsRequired();
        builder.Property(e => e.AuthorName).HasMaxLength(20).IsRequired();
    }
}
  1. 創(chuàng)建數(shù)據(jù)訪問類,即上下文類。必須實(shí)現(xiàn)DbContext接口。
using Microsoft.EntityFrameworkCore;
class TestDbContext : DbContext
{
    public DbSet<Book> Books { get; set; } //可對(duì)上文的Book實(shí)體進(jìn)行操作
    //配置數(shù)據(jù)庫的連接
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite("Data Source=MySqLite.db");
        optionsBuilder.LogTo(Console.WriteLine);
    }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        //設(shè)置需要加載的程序集
        //加載當(dāng)前程序集中所有實(shí)現(xiàn)了IEntityTypeConfiguration接口的類
        modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
    }
}

到此,EF Core的環(huán)境搭建完成,總結(jié)一下,目前還沒有數(shù)據(jù)庫只是定義了實(shí)體對(duì)象, EF Core會(huì)根據(jù)我們定義的實(shí)體對(duì)象自動(dòng)生成數(shù)據(jù)庫,這種操作也被稱之為遷移(migration)。

  1. 目前只是實(shí)體對(duì)象創(chuàng)建完成,但是還沒有在數(shù)據(jù)庫中生成相應(yīng)的表。安裝Nuget包Microsoft.EntityFrameworkCore.Tools。
  2. 在程序包管理器控制臺(tái)中執(zhí)行Add-Migration 自定義名稱,這個(gè)一個(gè)遷移命令,建議名稱是有意義的。

會(huì)自動(dòng)在項(xiàng)目下生成Migrations文件夾,文件夾下生成相應(yīng)的代碼,其中名稱為日期ID號(hào)_自定義名稱的類,其主要功能是創(chuàng)建數(shù)據(jù)庫。

  1. 以上只是創(chuàng)建了生成數(shù)據(jù)庫的類,但并沒有執(zhí)行。在程序包管理器控制臺(tái)中使用Update-database執(zhí)行數(shù)據(jù)庫遷移代碼。

續(xù):

  1. 如果此時(shí)修改了BookEntityConfig中屬性設(shè)置,需要再次執(zhí)行一次Add-Migration 自定義名稱,此時(shí)名稱要和之前的不一樣。
  2. 再次執(zhí)行Update-database

數(shù)據(jù)的增刪改查

插入數(shù)據(jù)
//要使用using,使用完成后釋放
using TestDbContext ctx = new TestDbContext();
//也是C#新語法,在創(chuàng)建的時(shí)候直接定義屬性
var b1 = new Book
{
    AuthorName = "楊中科",
    Title = "零基礎(chǔ)趣學(xué)C語言",
    Price = 59.8,
    PubTime = new DateTime(2019, 3, 1)
};
var b2 = new Book
{
    AuthorName = "Robert Sedgewick",
    Title = "算法(第4版)",
    Price = 99,
    PubTime = new DateTime(2012, 10, 1)
};
ctx.Books.Add(b1);
ctx.Books.Add(b2);
//以上部分只是修改了內(nèi)容中的數(shù)據(jù),需要使用save方法保存在數(shù)據(jù)庫中,推薦使用異步方法
await ctx.SaveChangesAsync();
查詢數(shù)據(jù)

可以使用LinQ對(duì)DbSet進(jìn)行數(shù)據(jù)查詢。

using TestDbContext ctx = new TestDbContext();

var books = ctx.Books.Where(b => b.Price > 80);
var booksOrder = ctx.Books.OrderBy(b => b.Price);//按照價(jià)格排序
var booksGroup = ctx.Books.GroupBy(b => b.AuthorName).Select(g => new { AuthorName = g.Key, booksCount = g.Count(), MaxPrice = g.Max(b => b.Price) });//分組后處理,利用了匿名類
修改和刪除數(shù)據(jù)
using TestDbContext ctx = new TestDbContext();
var b = ctx.Books.Single(b => b.Title == "數(shù)學(xué)之美");
b.AuthorName = "Jun Wu";
await ctx.SaveChangesAsync();

//刪除
var b = ctx.Books.Single(b => b.Title == "數(shù)學(xué)之美");
ctx.Remove(b);//也可以寫成ctx.Books.Remove(b);
await ctx.SaveChangesAsync();

**注意:**無論是修改還是刪除,都要先執(zhí)行數(shù)據(jù)的查詢,最后需要保存。文章來源地址http://www.zghlxwxcb.cn/news/detail-449211.html

到了這里,關(guān)于4.1EF Core的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • EF Core并發(fā)控制

    EF Core并發(fā)控制

    并發(fā)控制:避免多個(gè)用戶同時(shí)操作資源造成的并發(fā)沖突問題。 最好的解決方案:非數(shù)據(jù)庫解決方案 數(shù)據(jù)庫層面的兩種策略:悲觀、樂觀 悲觀并發(fā)控制一般采用行鎖 ,表鎖等排他鎖對(duì)資源進(jìn)行鎖定,確保同時(shí)只有一個(gè)使用者操作被鎖定的資源。 EF Core沒有封裝悲觀并發(fā)控制的

    2024年02月10日
    瀏覽(20)
  • EF Core入門

    EF Core入門

    EF Core是微軟官方提供的ORM框架。EF Core不僅可以操作Microsoft SQL Server、MySQL、Oracle、PostgreSQL等數(shù)據(jù)庫,而且可以操作Azure Cosmos DB等NoSQL數(shù)據(jù)庫 前提條件:已經(jīng)完整安裝了Microsoft SQL Server 下面是一個(gè)實(shí)際操作EF Core的演示 這是項(xiàng)目最終的目錄,這里需要關(guān)注的就是 .cs 文件 首先新

    2023年04月09日
    瀏覽(18)
  • Net Core中使用EF Core連接Mysql數(shù)據(jù)庫

    Net Core中使用EF Core連接Mysql數(shù)據(jù)庫

    Entity Framework Core的前身是微軟提供并主推的ORM框架,簡(jiǎn)稱EF,其底層是對(duì)ADO.NET的封裝。EF支持SQLServer、MYSQL、Oracle、Sqlite等所有主流數(shù)據(jù)庫。 首先是使用時(shí)的幾個(gè)模式的整理及其理解: Code First:根據(jù)代碼自動(dòng)創(chuàng)建數(shù)據(jù)庫表結(jié)構(gòu)甚至是數(shù)據(jù)庫,可以支持多庫開發(fā),代碼較少冗余

    2024年01月24日
    瀏覽(28)
  • EF Core + MySQL 基本增刪改查

    EF Core + MySQL 基本增刪改查

    基于EF Core + MySQL的基本增刪改查,示例是基于.NET6 + EF Core + MySQL 創(chuàng)建實(shí)體和數(shù)據(jù)庫、EFCore 數(shù)據(jù)遷移項(xiàng)目基礎(chǔ)上的內(nèi)容增加。同時(shí)也是對(duì)基于Canal實(shí)現(xiàn)MySQL 8.0 數(shù)據(jù)庫數(shù)據(jù)同步項(xiàng)目的驗(yàn)證。 Controllers----添加----控制器,選擇api----包含讀寫操作的API控制器。 將上下文類注入到User

    2024年02月08日
    瀏覽(24)
  • EF Core 在實(shí)際開發(fā)中,如何分層?

    EF Core 在實(shí)際開發(fā)中,如何分層?

    分層就是將 EF Core 放在單獨(dú)的項(xiàng)目中,其它項(xiàng)目如 Asp.net core webapi 項(xiàng)目引用它 這樣的好處是解耦和項(xiàng)目職責(zé)的清晰劃分,并且可以重用 EF Core 項(xiàng)目 但是也會(huì)數(shù)據(jù)庫遷移變得復(fù)雜起來 創(chuàng)建一個(gè) .NET 類庫項(xiàng)目,項(xiàng)目名字為 BooksEFCore 引用以下 Nuget 包 Microsoft.EntityFrameworkCore.Relati

    2024年01月24日
    瀏覽(25)
  • 使用EF Core創(chuàng)建webapi接口(二)

    使用EF Core創(chuàng)建webapi接口(二)

    有錯(cuò)誤歡迎大家給我指正 說明:netcore webapi+net6+EF?Core版本,codefirst模式(代碼創(chuàng)建數(shù)據(jù)庫) 1.netcore webapi+net6+EF?Core版本,dbfirst模式(代碼生成數(shù)據(jù)庫)見:使用EF Core創(chuàng)建webapi接口(一)-CSDN博客 2.netcore webapi+net6+EF?Core+vue前后端聯(lián)動(dòng)版本,見netcore webapi+net6+EF Core+vue3前后端聯(lián)動(dòng)-CSD

    2024年02月21日
    瀏覽(25)
  • EF Core預(yù)編譯模型Compiled Model

    EF Core預(yù)編譯模型Compiled Model

    最近還在和 npgsql 與 EF Core 斗爭(zhēng),由于 EF Core 暫時(shí)還不支持 AOT,因此在 AOT 應(yīng)用程序中使用 EF Core 時(shí),會(huì)提示問題: 聽這個(gè)意思,似乎使用 Compiled Model 可以解決問題,于是就又研究了一下 EF Core 的這個(gè)功能。 在 EF Core 中,模型根據(jù)實(shí)體類和配置構(gòu)建,默認(rèn)情況下,每次創(chuàng)建

    2024年02月05日
    瀏覽(20)
  • Ef Core花里胡哨系列(4) 多租戶

    當(dāng)然,我們要考慮設(shè)計(jì)問題,例如,切換 Schema 或者改變數(shù)據(jù)庫時(shí), Ef Core 同樣也會(huì)刷新改實(shí)體的緩存,所以,首次查詢將會(huì)很慢,不適合大表。 在我的上一篇博客中 [Ef Core花里胡哨系列(3) 動(dòng)態(tài)修改實(shí)體對(duì)應(yīng)的表(分表)、多租戶] 中我們實(shí)現(xiàn)了如何分表,同理,我們可以用近

    2024年02月03日
    瀏覽(19)
  • EF Core實(shí)操,數(shù)據(jù)庫生成實(shí)體,遷移

    EF Core實(shí)操,數(shù)據(jù)庫生成實(shí)體,遷移

    大家好,我是行不更名,坐不改姓的宋曉剛,下面將帶領(lǐng)大家進(jìn)入C#編程EF Core數(shù)據(jù)庫基礎(chǔ)入門知識(shí),如何連接數(shù)據(jù)庫,如何編寫代碼,跟上我的步伐進(jìn)入EF Core數(shù)據(jù)庫下的世界。 家人們,如果有什么不懂,可以留言,或者加我聯(lián)系方式,一起進(jìn)入微軟技術(shù)的開拓。 微信:153

    2024年01月22日
    瀏覽(21)
  • 如何在 EF Core 中使用樂觀并發(fā)控制

    如何在 EF Core 中使用樂觀并發(fā)控制

    樂觀并發(fā)控制是一種處理并發(fā)訪問的數(shù)據(jù)的方法,它基于一種樂觀的假設(shè),即認(rèn)為并發(fā)訪問的數(shù)據(jù)沖突的概率很低。在樂觀并發(fā)控制中,系統(tǒng)不會(huì)立即對(duì)并發(fā)訪問的數(shù)據(jù)進(jìn)行加鎖,而是在數(shù)據(jù)被修改時(shí),再檢查是否有其他并發(fā)操作已經(jīng)修改了數(shù)據(jù)。如果檢測(cè)到?jīng)_突,系統(tǒng) 再采

    2024年02月04日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包