EF 默認主鍵、外鍵


EF Code First中的主外鍵約定

原文地址:http://www.entityframeworktutorial.net/code-first/code-first-conventions.aspx

 

EF教程:https://www.entityframeworktutorial.net/code-first/code-first-conventions.aspx

 

約定就是一系列的默認規則,通過這些規則,在使用EF Code-First的時候,可以自動的基於你的領域類配置概念模型。就像你在前面Code-First示例一節中看到的那樣,EF API 基於領域類,不需要額外的配置就可以,配置主鍵,外鍵,關系,以及列的數據類型等等。這就是EF Code-First約定在起的作用。如果領域類遵循了默認的約定,那么生成的數據庫結構,就會是基於這個默認約定的。EF 6.x Code -First默認約定都定義在System.Data.Entity.ModelConfiguration.Conventions命名空間下。

下面的圖表,列出來了Code-First默認約定:

默認約定

描述

Schema【模式】

默認情況下,EF會為所有的數據庫對象,創建dbo模式名稱。

Table Name【數據表名稱】

默認,EF將會創建為實體創建的表名稱是,實體名稱+s。例如:Student實體將會映射成Students表

Primary Key Name【主鍵名稱】

1.Id

2.實體名稱+"Id"(不區分大小寫的)

默認情況下,EF將會把實體的Id屬性設置為主鍵,或者是將實體名稱+Id的屬性設置為主鍵。【不區分大小寫的】

Foreign Key Property Name【外鍵名稱】

默認情況下,EF將查找與主體實體的主鍵名稱相同的外鍵屬性。

如果這個外鍵屬性不存在,那么EF將會在數據表中,創建一個外鍵列,名稱是:依賴項的導航屬性名稱+“_”+主體實體的主鍵名稱。

例如:如果在Student實體中,不包含Grade實體的外鍵屬性,EF將會在Students表中,創建名稱為Grade_GradeId的外鍵。

NULL column 【NULL的列】 

EF將會為所有的引用類型的屬性創建可空數據列。例如:string,NUllable<int>,Student,Grade(所有類類型的屬性)

Not null column【不為空的列】

EF中為主鍵屬性以及不為空類型的值類型創建非空列。例如:int、float、decimal、datetime等等。

DB Column Order【數據庫列的順序】

EF會根據屬性在實體中的順序,為列創建相應的順序。需要注意的是:主鍵列會被移到第一個

Properties mapping to DB【屬性怎么映射到數據庫】

默認情況下,所有的實體屬性都會被映射到數據庫中,可以使用【NotMapped】特性,來標識屬性,就可以讓這個屬性不被映射到數據庫的表中了。

Cascade delete【級聯刪除】

默認對所有類型的關系都是啟用的。

 下面的圖表,列出來了C#數據類型和SQL Server數據類型映射的對應關系。

C#數據類型

映射到的SQL Server數據類型

int

int

string

nvarchar(max)

decimal

decimal(18,2)

float

real

byte[]

varbinary(max)

datetime

datetime

bool

bit

byte

tinyint

short

smallint

long

bigint

double

float

char

no mapping

sbyte

no mapping(Throws exception)拋異常

object

no mapping

 下面的圖形,列出來了,根據默認的約定,生成的數據庫。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM