本節我們只介紹在ef中比較常見的對映
零、表名對映
預設情況下可以不配置表名,我們的模型名稱將會作為資料庫的表名。但是大部分專案會要求資料庫表名稱的規範,例如我們要將模型user在資料庫中對映為users,那麼我們可以這麼做,在派生類上下文中的onmodelcreating中進行如下定義:
modelbuilder.entity().totbale("users");
一、主鍵對映
表的主鍵我們一般習慣使用id或者以id結尾的方式來命名,ef預設情況下會將id或以id結尾的屬性作為主鍵,如果兩者都存在的話,缺省會以id作為主鍵。但是,還存在如下幾種情況:
設定聯合主鍵;
主鍵為int型別,但是不是自增長的,而是手動分配的。
針對上面兩種情況,我們分別進行如下配置:
//設定聯合主鍵modelbuilder.entity().haskey(k => new);//手動分配主鍵值modelbuilder.entity().haskey(k => k.id).property(p => p.id).hasdatabasegeneratedoption(databasegeneratedoption.none);
databasegeneratedoption 是列舉型別,值如下:值說明
identity
標識列computed
計算列none
手動分配值
二、數值對映
資料庫中的數值型別有很多種,c#中也有很多數值型別,但是我們無法直接將c#中的數值型別轉換為資料庫中的數值型別。那麼怎麼將c#數值型別對映為資料庫數值型別呢?這裡我們以 c#float為例,來看一下**:
modelbuilder.entity().property(p=>p.float);
通過上面的**,我們將 c#float型別對映為了資料庫的real型別。下表是c#數值型別對應的資料庫的數值型別:
c#數值型別
資料庫數值型別
intint
double
float
float
real
decimal
decimal(18,2)
int64
bigint
我們看到上表中有乙個c#數值型別decimal對應的資料庫數值型別是decimal(18,2),括號中的2代表小數點後保留2位,但是在一些情況下我們需要保留小數點後面n位,這時我們可以這麼做:
modelbuilder.entity().property(p=>p.money).hasprecision(18,4);
三、字串對映
當我們未對string型別的屬性配置對映時,預設的資料庫型別是nvarchar(max),但是大部分情況下不會使用這個預設的對映。舉幾個例子來講解一下怎麼來改變這個預設對映。
字段不可為空
//設定name屬性在資料庫對映不可為空modelbuilder.entity().property(p=>p.name).isrequired();
欄位可為空
//設定birthday屬性在資料庫對映可為空modelbuilder.entity().property(p=>p.birthday).isoptional();
四、日期對映
ef中的日期型別在資料庫中預設對映為date,但是資料庫中的日期型別還有很多,並且有時候我們需要將日期型別對映為資料庫其他型別,那麼我們該怎麼做呢?這裡我們以對映為datetime為例:
modelbuilder.entity().property(p=>p.createdatetime).hascolumntype("datetime");
注:數值型別和日期型別屬於值型別,因此我們不需要通過isrequired來配置對映字段不可為空,因為預設就是不為空的。但是可以通過isoptional設定可為空。
JS簡簡簡易時鐘
簡易時鐘 1 搭建html css部分 插入時鐘背景,使用子絕父相。把時針和分針 秒針的樣式放在時鐘的中心位置 2 js邏輯部分 1 獲取時針 分針 秒針 var hour document.getelementbyid hour var min document.getelementbyid mi...
Metasploit Framework 簡單介紹
1.簡介 metasploit framework 是乙個緩衝區溢位測試使用的輔助工具,也可以說是乙個漏洞利用和測試平台。它整合了各平台上常見的溢位漏洞和流行的shellcode,並且不斷更新,使得緩衝區溢位測試變得方便和簡單。2.主頁 1 選定使用的漏洞 use 2 設定漏洞利用的環境 targe...
android PagerAdapter簡單應用
pageradapter是android.support.v4包中的類,它的子類有fragmentpageradapter fragmentstatepageradapter,這兩個adapter都是fragment的介面卡,用於實現fragment的滑動效果 pageradapter主要是view...