EntityFramework中,設計模式的轉變?

時間 2021-05-29 22:57:47

1樓:

code first和你用哪種db沒關係。

用code first開發從localdb遷移到mssql上也就分分鐘的事,改個連線串就ok了。

2樓:York Yao

CodeFirst下你應該會定義乙個上下文,繼承自DbContext,例如像這樣:

public class Entities : DbContextpublic Entities() : base("name=Entities"Database.

SetInitializer(new Initializerpublic virtual DbSet Users { get; setpublic virtual DbSet Roles { get; setpublic virtual DbSet Permissions { get; set

你可能沒有定義Initializer類,它的定義,在開發時是這樣子的:

public class Initializer : DropCreateDatabaseIfModelChangesprotected override void Seed(Entities context這裡插入初始資料

這樣模型改變時,就會重新建立資料庫。而部署時,你改成:

public class Initializer : CreateDatabaseIfNotExistsprotected override void Seed(Entities context這裡插入初始資料

同時把你的連線字串改成生產用的資料庫就行了。

原理就是:在CodeFirst裡,會先判斷用的是那個Initializer,

如果是DropCreateDatabaseAlways,那麼EF總是刪掉舊庫,建立新庫;

如果是DropCreateDatabaseIfModelChanges,那麼EF會先判斷資料庫結構是否改變,如果變了,那麼EF刪掉舊庫,建立新庫;

如果是CreateDatabaseIfNotExists,那麼EF先會看指定的連線字串上有沒有庫,如果沒有庫,就會建立乙個,否則不做任何操作,所以適合在生產環境中使用。

總之,工作流是這樣的:

1.開發時用DropCreateDatabaseIfModelChanges,資料庫用預設的localdb;同時把資料庫的變更以SQL語句的形式記錄下來。

2.發布前改成CreateDatabaseIfNotExists,同時修改連線字串,變成生產資料庫。

3.在生產資料庫上執行SQL,保證開發庫和生產庫的結構一致。

4.發布,這樣就做到增量開發、部署了。

至於http://

ASP.NET

Identity,我沒用過,就不回答了。

為什麼要學習別人的設計模式?

jalen wu 設計模式和物件導向一起裝逼一起飛。物件導向的理念有嚴重缺陷,於是二逼們就用各種套路去把不是物件導向的問題轉成物件導向,有的就叫設計模式了。 雙鶴之翼 設計的關鍵從來都不是設計模式,而是設計原則。乙個好的設計並不需要死套哪些設計模式的,最重要的是闡述好OOP的設計原則,盡可能做到開放...

設計院轉甲方的時機?

就我個人經驗來說當然是越早越好,我沒有在設計院待過,一畢業就進甲方地產,畢業至今差不多7年多了,薪資也從最初的月薪7k到現在的年薪60w,當然中途跳過幾次槽,對於甲方來說公升職加薪最直接的就是跳槽,你問我現在還有多少情懷我不敢說我沒有,但是現實因素更多的是考慮荷包,自己也免不了俗氣,所以我的建議是越...

勘察設計中的設計是指哪些設計

hachangju 勘察設計是工程勘察和工程設計合稱,它們都是施工前期的重要工作,從事建設工程勘察 設計活動,應該堅持先勘察 後設計 再施工的原則。工程設計包含21個行業 建築 海洋 煤碳 水利 電力 農林 市政 民航等等 建築行業是其中之一。建築行業分為建築工程和人防工程2個專業。建築工程就是各種...