国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

深圳外貿(mào)網(wǎng)站開發(fā)建設網(wǎng)絡營銷出來可以干什么工作

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

目錄

分層項目中EF Core的用法

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

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

步驟匯總

注意:

批量注冊上下文


分層項目中EF Core的用法

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

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

  1. 上下文類MyDbContext :為什么正式項目中最好不要在MyDbContext寫數(shù)據(jù)庫配置(連接不同的DB甚至不同類型的DB)。盡量數(shù)據(jù)庫配置的代碼寫到ASP.NET Core項目中。不重寫OnConfiguring方法,而是為MyDbContext類的構(gòu)造方法增加DbContextOptions<MyDbContext>參數(shù)。在ASP.NET Core項目對DbContextOptions的配置。
  2. 創(chuàng)建ASP.NET Core項目,添加對“BooksEFCore”項目的引用。NuGet安裝Microsoft.EntityFrameworkCore.SqlServer。
  3. 配置文件、配置代碼等放到ASP.NET Core項目中。
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ù)庫遷移

  1. 不用研究多項目中Add-Migration的細節(jié)。實用的方案:編寫實現(xiàn)IDesignTimeDbContextFactory接口的類,把配置放到里面,反正是開發(fā)環(huán)境用而已。
  2. 可以把連接字符串配置到環(huán)境變量中,不過MyDesignTimeDbContextFactory中很難使用IConfiguration來讀取配置系統(tǒng),可以直接用Environment.GetEnvironmentVariable() 讀取環(huán)境變量。
  3. 數(shù)據(jù)庫遷移腳本要生成到BooksEFCore中,因此為這個項目安裝Microsoft.EntityFrameworkCore.Tools、Microsoft.EntityFrameworkCore.SqlServer。然后把BooksEFCore設置為啟動項目,并且在【程序包管理器控制臺】中也選中BooksEFCore項目后,執(zhí)行Add-Migration和Update-Database
internal class MyDesignTimeDbContextFactory : IDesignTimeDbContextFactory<MyDbContext>
{//開發(fā)時(Add-Migration、Update-Database等)運行的數(shù)據(jù)庫上下文工廠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. 建類庫項目,放實體類、DbContext、配置類等;DbContext中不配置數(shù)據(jù)庫連接,而是為DbContext增加一個DbContextOptions類型的構(gòu)造函數(shù)。
  2. EFCore項目安裝對應數(shù)據(jù)庫的EFCore Provider
  3. asp.net core項目引用EFCore項目,并且通過AddDbContext來注入DbContext及對DbContext進行配置。
  4. Controller中就可以注入DbContext類使用了。
  5. 讓開發(fā)環(huán)境的Add-Migration知道連接哪個數(shù)據(jù)庫,在EFCore項目中創(chuàng)建一個實現(xiàn)了IDesignTimeDbContextFactory的類。并且在CreateDbContext返回一個連接開發(fā)數(shù)據(jù)庫的DbContext。
    如果不在乎連接字符串被上傳到Git,就可以把連接字符串直接寫死到CreateDbContext;如果在乎,那么CreateDbContext里面很難讀取到VS中通過簡單的方法設置的環(huán)境變量,所以必須把連接字符串配置到Windows的正式的環(huán)境變量中,然后再 Environment.GetEnvironmentVariable讀取。
  6. 正常執(zhí)行Add-Migration、Update-Database遷移就行了。需要把EFCore項目設置為啟動項目,并且在【程序包管理器控制臺】中也要選中EFCore項目,并且安裝Microsoft.EntityFrameworkCore.SqlServer、Microsoft.EntityFrameworkCore.Tools

注意:

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

批量注冊上下文

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

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.aloenet.com.cn/news/42411.html

相關(guān)文章:

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