中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

深圳外貿(mào)網(wǎng)站開(kāi)發(fā)建設(shè)網(wǎng)絡(luò)營(yíng)銷出來(lái)可以干什么工作

深圳外貿(mào)網(wǎng)站開(kāi)發(fā)建設(shè),網(wǎng)絡(luò)營(yíng)銷出來(lái)可以干什么工作,360建筑網(wǎng)發(fā)布的信息怎么刪除,網(wǎng)站建設(shè)指導(dǎo)合同目錄 分層項(xiàng)目中EF Core的用法 數(shù)據(jù)庫(kù)的配置 數(shù)據(jù)庫(kù)遷移 步驟匯總 注意: 批量注冊(cè)上下文 分層項(xiàng)目中EF Core的用法 創(chuàng)建一個(gè).NET類庫(kù)項(xiàng)目BooksEFCore,放實(shí)體等類。NuGet:Microsoft.EntityFrameworkCore.RelationalBooksEFCore中增加實(shí)…

目錄

分層項(xiàng)目中EF Core的用法

數(shù)據(jù)庫(kù)的配置

數(shù)據(jù)庫(kù)遷移

步驟匯總

注意:

批量注冊(cè)上下文


分層項(xiàng)目中EF Core的用法

  1. 創(chuàng)建一個(gè).NET類庫(kù)項(xiàng)目BooksEFCore,放實(shí)體等類。
  2. NuGet:Microsoft.EntityFrameworkCore.Relational
  3. BooksEFCore中增加實(shí)體類Book和配置類。

數(shù)據(jù)庫(kù)的配置

  1. 上下文類MyDbContext :為什么正式項(xiàng)目中最好不要在MyDbContext寫(xiě)數(shù)據(jù)庫(kù)配置(連接不同的DB甚至不同類型的DB)。盡量數(shù)據(jù)庫(kù)配置的代碼寫(xiě)到ASP.NET Core項(xiàng)目中。不重寫(xiě)OnConfiguring方法,而是為MyDbContext類的構(gòu)造方法增加DbContextOptions<MyDbContext>參數(shù)。在ASP.NET Core項(xiàng)目對(duì)DbContextOptions的配置。
  2. 創(chuàng)建ASP.NET Core項(xiàng)目,添加對(duì)“BooksEFCore”項(xiàng)目的引用。NuGet安裝Microsoft.EntityFrameworkCore.SqlServer。
  3. 配置文件、配置代碼等放到ASP.NET Core項(xiàng)目中。
MyDbContext:
public class MyDbContext : DbContext
{public DbSet<Book> Books { get; set; }public MyDbContext(DbContextOptions<MyDbContext> options) : base(options){}protected override void OnModelCreating(ModelBuilder modelBuilder){base.OnModelCreating(modelBuilder);modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);}
}secrets.json:
{"ConnStr": "Data Source=.;Initial Catalog=demo1;Integrated Security=SSPI;TrustServerCertificate=true;"
}Program.cs:
builder.Services.AddDbContext<MyDbContext>(opt =>
{string connStr = builder.Configuration.GetSection("ConnStr").Value;opt.UseSqlServer(connStr);
});Controller:
private readonly MyDbContext dbCtx;
public TestController(MyDbContext dbCtx)
{this.dbCtx = dbCtx;
}

數(shù)據(jù)庫(kù)遷移

  1. 不用研究多項(xiàng)目中Add-Migration的細(xì)節(jié)。實(shí)用的方案:編寫(xiě)實(shí)現(xiàn)IDesignTimeDbContextFactory接口的類,把配置放到里面,反正是開(kāi)發(fā)環(huán)境用而已。
  2. 可以把連接字符串配置到環(huán)境變量中,不過(guò)MyDesignTimeDbContextFactory中很難使用IConfiguration來(lái)讀取配置系統(tǒng),可以直接用Environment.GetEnvironmentVariable() 讀取環(huán)境變量。
  3. 數(shù)據(jù)庫(kù)遷移腳本要生成到BooksEFCore中,因此為這個(gè)項(xiàng)目安裝Microsoft.EntityFrameworkCore.Tools、Microsoft.EntityFrameworkCore.SqlServer。然后把BooksEFCore設(shè)置為啟動(dòng)項(xiàng)目,并且在【程序包管理器控制臺(tái)】中也選中BooksEFCore項(xiàng)目后,執(zhí)行Add-Migration和Update-Database
internal class MyDesignTimeDbContextFactory : IDesignTimeDbContextFactory<MyDbContext>
{//開(kāi)發(fā)時(shí)(Add-Migration、Update-Database等)運(yùn)行的數(shù)據(jù)庫(kù)上下文工廠public MyDbContext CreateDbContext(string[] args){DbContextOptionsBuilder<MyDbContext> optionsBuilder = new DbContextOptionsBuilder<MyDbContext>();string connStr = Environment.GetEnvironmentVariable("ConnStr");optionsBuilder.UseSqlServer(connStr);MyDbContext dbCtx = new MyDbContext(optionsBuilder.Options);return dbCtx;}
}

步驟匯總

  1. 建類庫(kù)項(xiàng)目,放實(shí)體類、DbContext、配置類等;DbContext中不配置數(shù)據(jù)庫(kù)連接,而是為DbContext增加一個(gè)DbContextOptions類型的構(gòu)造函數(shù)。
  2. EFCore項(xiàng)目安裝對(duì)應(yīng)數(shù)據(jù)庫(kù)的EFCore Provider
  3. asp.net core項(xiàng)目引用EFCore項(xiàng)目,并且通過(guò)AddDbContext來(lái)注入DbContext及對(duì)DbContext進(jìn)行配置。
  4. Controller中就可以注入DbContext類使用了。
  5. 讓開(kāi)發(fā)環(huán)境的Add-Migration知道連接哪個(gè)數(shù)據(jù)庫(kù),在EFCore項(xiàng)目中創(chuàng)建一個(gè)實(shí)現(xiàn)了IDesignTimeDbContextFactory的類。并且在CreateDbContext返回一個(gè)連接開(kāi)發(fā)數(shù)據(jù)庫(kù)的DbContext。
    如果不在乎連接字符串被上傳到Git,就可以把連接字符串直接寫(xiě)死到CreateDbContext;如果在乎,那么CreateDbContext里面很難讀取到VS中通過(guò)簡(jiǎn)單的方法設(shè)置的環(huán)境變量,所以必須把連接字符串配置到Windows的正式的環(huán)境變量中,然后再 Environment.GetEnvironmentVariable讀取。
  6. 正常執(zhí)行Add-Migration、Update-Database遷移就行了。需要把EFCore項(xiàng)目設(shè)置為啟動(dòng)項(xiàng)目,并且在【程序包管理器控制臺(tái)】中也要選中EFCore項(xiàng)目,并且安裝Microsoft.EntityFrameworkCore.SqlServer、Microsoft.EntityFrameworkCore.Tools

注意:

配置完環(huán)境變量需重啟VS

批量注冊(cè)上下文

如果項(xiàng)目采用小上下文策略,在項(xiàng)目中可能就存在多個(gè)上下文類,需要手動(dòng)調(diào)用AddDbContext方法注冊(cè),如果上下文連接的是同一個(gè)數(shù)據(jù)庫(kù),可以采用反射的方式掃描程序集中所有的上下文,然后為它們逐個(gè)調(diào)用AddDbContext注冊(cè)。

Add-Migration xxx -Context DbContext名

Update-Database?-Context DbContext名

Install-Package Zack.Infrastructure

//var asms=new Assembly[] {Assembly.Load("EFCoreBooks") };
var asms= ReflectionHelper.GetAllReferencedAssemblies();
builder.Services.AddAllDbContexts(opt =>
{string connStr = builder.Configuration.GetSection("ConnStr").Value;opt.UseSqlServer(connStr);
}, asms);public record Person
{public long Id { get; set; }public string Name { get; set; }public int Age { get; set; }public string Address { get; set; }
}public class PersonDbContext : DbContext
{public DbSet<Person> Persons { get; set; }public PersonDbContext(DbContextOptions<PersonDbContext> options) : base(options){}
}internal class PersonDesignTimeDbContextFactory : IDesignTimeDbContextFactory<PersonDbContext>
{public PersonDbContext CreateDbContext(string[] args){DbContextOptionsBuilder<PersonDbContext> optionsBuilder = new DbContextOptionsBuilder<PersonDbContext>();string connStr = Environment.GetEnvironmentVariable("ConnStr");optionsBuilder.UseSqlServer(connStr);PersonDbContext dbCtx = new PersonDbContext(optionsBuilder.Options);return dbCtx;}
}

http://m.risenshineclean.com/news/42411.html

相關(guān)文章:

  • 做動(dòng)態(tài)網(wǎng)站有哪些平臺(tái)關(guān)于市場(chǎng)營(yíng)銷的100個(gè)問(wèn)題
  • 網(wǎng)站管理的內(nèi)容網(wǎng)站推廣系統(tǒng)
  • wordpress加授權(quán)網(wǎng)絡(luò)優(yōu)化工程師證書(shū)
  • 做視頻小網(wǎng)站犯法嗎可口可樂(lè)營(yíng)銷策劃方案
  • 做網(wǎng)站的控件新品牌推廣策略
  • 如何選擇丹陽(yáng)網(wǎng)站建設(shè)百度榜單
  • 遂溪手機(jī)網(wǎng)站建設(shè)公司百度指數(shù)專業(yè)版app
  • 我想網(wǎng)關(guān)鍵詞優(yōu)化舉例
  • h網(wǎng)站建設(shè)網(wǎng)絡(luò)優(yōu)化大師手機(jī)版
  • 做企業(yè)網(wǎng)站的好處域名注冊(cè)平臺(tái)有哪些
  • photoshop網(wǎng)站視覺(jué)設(shè)計(jì)步驟seo引流什么意思
  • 山東淄博網(wǎng)站建設(shè)的公司百度快速排名化
  • 行業(yè)資訊網(wǎng)seo推廣軟件
  • 網(wǎng)頁(yè)設(shè)計(jì)實(shí)訓(xùn)報(bào)告代碼新手學(xué)seo
  • 小型公眾號(hào)開(kāi)發(fā)seo網(wǎng)站推廣經(jīng)理
  • 武漢漢口做網(wǎng)站公司訊展網(wǎng)站優(yōu)化推廣
  • 湖北省建設(shè)質(zhì)量安全協(xié)會(huì)網(wǎng)站seo網(wǎng)站推廣專員招聘
  • 網(wǎng)站在阿里云備案免費(fèi)數(shù)據(jù)統(tǒng)計(jì)網(wǎng)站
  • 禮品公司網(wǎng)站建設(shè)好的競(jìng)價(jià)托管公司
  • 天津建設(shè)工程信息網(wǎng)專家sem 優(yōu)化價(jià)格
  • 網(wǎng)站上添加子欄目濰坊百度網(wǎng)站排名
  • 深圳網(wǎng)站建設(shè)公司是選擇寧波seo優(yōu)化公司
  • 備案上個(gè)人網(wǎng)站和企業(yè)網(wǎng)站的區(qū)別百度sem是什么意思
  • wordpress開(kāi)啟多站點(diǎn)功網(wǎng)絡(luò)營(yíng)銷有哪些特點(diǎn)
  • 網(wǎng)站優(yōu)化 代碼優(yōu)化互聯(lián)網(wǎng)優(yōu)化
  • 如何為網(wǎng)站開(kāi)發(fā)app中公教育培訓(xùn)機(jī)構(gòu)官網(wǎng)
  • 便宜網(wǎng)站建設(shè)公司如何建立自己的網(wǎng)站平臺(tái)
  • 微信怎么做捐錢(qián)的網(wǎng)站網(wǎng)站推廣費(fèi)用
  • 一站式裝修平臺(tái)杭州seo論壇
  • 網(wǎng)頁(yè)設(shè)計(jì)網(wǎng)站建設(shè)過(guò)程報(bào)告免費(fèi)網(wǎng)站入口在哪