EFCore CodeFirst 註解特性

2021-10-14 03:04:17 字數 2503 閱讀 9088

table特性可以應用於乙個領域類上面,用來在資料庫中生成相應名稱的資料表。它重寫了ef 6和 ef code 中預設的約定,根據預設約定,ef 6和ef core建立的表的名稱是實體名稱+s(或者es),並且建立的資料表的列名稱和實體屬性名稱一樣。

* table attribute:[table(string name, properties:[schema = string])

name:資料表的名稱

schema

:資料庫的模式名稱【可選的】

如下student類:資料庫生成的表名為sc.studentinfo

[table("studentinfo",schema="sc")]

public class student

public string name

}

標識字段為主鍵。如果是多個欄位都標識了[key],則預設生成聯合主鍵。

column特性,可以應用於實體的乙個或者多個屬性上面,用來配置資料庫中資料表中列的列名、列的資料型別以及列的先後順序。column特性重寫了預設的約定。按照ef 6和ef core中的預設約定,將會建立和屬性相同的列名稱,並且資料表,列的順序和實體中屬性的順序一致。

* column attribute:[column (string name, properties:[order = int],[typename = string])

name:表的資料列的名稱

order:列的順序,從索引0開始【可選的】

typename:列的型別名稱【可選的】

如下addtime列:資料庫生成的字段將是「createtime」而不是實體類中的addtime,型別是「date」而不是預設的datetime。

[table("studentinfo",schema="sc")]

public class student

public string name

[column("createtime",typename="date")]

public datetime addtime

}

required特性可以應用於乙個實體的乙個或多個屬性上面。ef將會為標識required特性的屬性,在資料庫表的列中生成不為空(not null)的列。

stringlength特性可以應用於實體的string型別的屬性上,它指定了屬性的所允許的最大字元長度,然後對應在資料庫中就生成相應長度的資料列(在sql server資料庫中是,nvarchar型別)。

maxlength特性指定了屬性的值所允許的最大值,然後在資料庫中就生成相應列的最大值。maxlength特性可以應用於實體的string型別的屬性和byte陣列型別的屬性上。

區別:[maxlength] 適用的型別比[stringlength]多。

需要注意的是:ef不會為沒有get;和set;的屬性,建立列。

用來在特定的列上面建立索引,預設情況下,索引的名稱是ix_。

* column attribute:[index(string name, properties:[isclustered= bool],[isunique= bool])

name:索引名稱

isclustered: 是否是建聚合索引

isunique:是否是唯一索引

如下name欄位,資料庫建立的索引名稱「idx_student_name」,為聚合索引,唯一索引。

[table("studentinfo",schema="sc")]

public class student

[index("idx_student_name",isclustered=true,isunique=true)]

public string name

[column("createtime",typename="date")]

public datetime addtime

}

在ef 6和ef core中,資料註解中的foreignkey特性,是用來在兩個實體間配置外來鍵關係。

根據預設的約定,當屬性的名稱與相關實體的主鍵屬性匹配時,ef將該屬性作為外來鍵屬性。

foreignkey signature: [foreignkey(name string)]

name:相關聯的導航屬性的名稱或者相關聯的外來鍵屬性名稱

一般用法:

public class student

public string studentname

[foreignkey("teacherid")]

public teacher teacher

}public class teacher

public string teachername

}

EFCore code first 建立資料庫

此處記錄學習efcore 過程中一些學習筆記 1.code first 建立資料庫,一對多關係對應為乙個物件擁有乙個集合,這個集合使用virtual標識以便使用lazyloading,另一方面被擁有的物件也有所屬物件及所屬物件id。多對多關係除了兩個物件分別用擁有對方集合方式表示外,還得有兩個物件關...

Spring註解 Import註解

常用的匯入註解分類 註冊自己寫的類service dao controller可用包掃瞄 元件標註註解 controller service repository component bean 匯入的第三方包裡面的元件 import 快速給容器中匯入乙個元件 1 import 要匯入到容器中的元件 ...

Java 註解 元註解

retention retentionpolicy.source 註解僅存在於原始碼中,在class位元組碼檔案中不包含 retention retentionpolicy.class 預設的保留策略,註解會在class位元組碼檔案中存在,但執行時無法獲得,retention retentionpo...